none
用了IHttpAsyncHandler无效?还是我理解错了? RRS feed

  • 问题

  • 我想利用IHttpAsyncHandler实现一个长连接,但测试过程中发现,一旦超过10个连接,网站就打不开了,除非前面的连接处理完,后面才会被处理。

    如图所示,前10个不做返回,第11个应该是立即返回的,但是没返回,主要代码如下:

    public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, object extraData)
        {
            if (context.Request.Url.Query == "?details")
            {
                AsyncResult r = new AsyncResult { Context = context, IsCompleted = true, Html=Count.ToString() };
                cb(r);
                return r;
            }
            else
            {
                AsyncResult r = new AsyncResult { Context = context, AsyncCallback = cb };

                System.Threading.Interlocked.Increment(ref Count);//计数

                return r;
            }

        }

    难道说主线程在异步处理时不可以空出来继续处理其他的请求吗?

    问题解决了,我在win7下开发测试的,IIS在win7下每个进程只能连接10个,但我查的时候发现很多人都以为win7是不限制的,其实win7还是限制了
    • 已编辑 磨细 2014年3月18日 7:49
    2014年3月17日 6:21

答案

  • 你好,

           实现IHttpAsyncHandler是非常相似的IHttpHandler接口,但是具有两个额外的方法来重写 - BeginProcessRequestEndProcessRequest你需要调用一个委托来进行异步处理,这听起来很复杂但它实际上并不是。你能参考这个链接:  How to use the IHttpAsyncHandler in ASP.NET

           You can implement an HttpHandler with IHttpAsyncHandler. MSDN has a nice walkthrough with examples on how to do that here

     
                                                             

                 希望可以帮到你。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place. <br/> Click <a href="http://support.microsoft.com/common/survey.aspx?showpage=1&scid=sw%3Ben%3B3559&theme=tech"> HERE</a> to participate the survey.


    2014年3月18日 2:07
    版主