实例1 : 在异步handler中异步访问网络 并返回结果

 public class Demo1 : IHttpAsyncHandler
    {


        
#region IHttpAsyncHandler Members

        
public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, object extraData)
        {

            context.Response.Write(
"begin");


            var request 
= (HttpWebRequest)WebRequest.Create("http://www.baidu.com");

            
return request.BeginGetResponse(ar =>
            {
                var response 
= request.EndGetResponse(ar);

                
byte[] data = new byte[response.ContentLength];

                response.GetResponseStream().Read(data, 
0, data.Length);

                response.Close();

                context.Response.Write(Encoding.Default.GetString(data));
               
                cb(ar); 
//通知asp.net异步请求已完成
            }, context);

        }

        
public void EndProcessRequest(IAsyncResult result)
        {

            var context 
= (HttpContext)result.AsyncState; //获取我们在BeginGetResponse中传入的HttpContext
            context.Response.Write("end");

        }

        
#endregion

        
#region IHttpHandler Members

        
public bool IsReusable
        {
            
get { return false; }
        }

        
public void ProcessRequest(HttpContext context)
        {

        }

        
#endregion
    }

相关文章: