|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Net;
namespace WcfAsyncRestApi
{
/// <summary>
/// Summary description for AsyncHandler
/// </summary>
public class AsyncHandler : IHttpAsyncHandler
{
public bool IsReusable
{
get
{
return false;
}
}
public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, object extraData)
{
HttpWebRequest request = WebRequest.Create(context.Request["url"]) as HttpWebRequest;
return request.BeginGetResponse(cb, new MyState { Context = context, Request = request });
}
public void EndProcessRequest(IAsyncResult result)
{
var state = result.AsyncState as MyState;
var webResponse = state.Request.EndGetResponse(result);
var stream = webResponse.GetResponseStream();
byte[] buffer = new byte[8000];
int size = 0;
state.Context.Response.AddHeader("Content-Type", "text/plain");
do{
size = stream.Read(buffer, 0, 8000);
if (size > 0)
state.Context.Response.OutputStream.Write(buffer, 0, size);
} while (size > 0);
state.Context.Response.End();
}
public void ProcessRequest(HttpContext context)
{
throw new NotImplementedException();
}
}
class MyState
{
public HttpContext Context;
public HttpWebRequest Request;
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.