首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.Net: IHttpAsyncHandler和IRequiresSessionState不工作

ASP.Net: IHttpAsyncHandler和IRequiresSessionState不工作
EN

Stack Overflow用户
提问于 2010-03-26 19:33:03
回答 2查看 2K关注 0票数 0

我已经实现了一个IHttpAsyncHandler。我正在从一个具有小部件的网页调用大约5个AJAX调用到该处理程序。

其中一个小部件大约需要15秒才能加载(因为有一个大型数据库查询),其他部件都应该在1秒内加载。处理程序以同步方式进行响应。

我得到的结果不一致。ProcessRequest方法使用会话和其他类级变量。会不会导致不同的请求使用相同的线程而不是每个线程都有自己的?

我要把这个..。

Request1 ->响应1秒

Request2 -->响应14秒

Request3 ->响应14.5秒

Request4 ->响应15秒

Request5 ->响应15.5秒

但我在找更像这样的东西..。

Request1 ->响应1秒

Request2 -->响应14秒

Request3 ->响应1.5秒

Request4 ->响应2秒

Request5 ->响应1.5秒

在不提交太多代码的情况下,IHttpAsyncHandler方法的实现是相当标准的。

代码语言:javascript
复制
private AsyncProcessorDelegate _Delegate;

protected delegate void AsyncProcessorDelegate(HttpContext context); 

IAsyncResult IHttpAsyncHandler.BeginProcessRequest(HttpContext context, 
    AsyncCallback cb, object extraData)
{
    _Delegate = new AsyncProcessorDelegate(ProcessRequest);

    return _Delegate.BeginInvoke(context, cb, extraData); 
}

void IHttpAsyncHandler.EndProcessRequest(IAsyncResult result)
{
    _Delegate.EndInvoke(result); 
}

在我的IHttpAsyncHandler.BeginProcessRequest方法中放置一个调试断点,我可以看到,直到最后一个进程完成后,该方法才会被触发。

我的machine.config也有这个条目..。没有设置其他属性的processModel autoConfig="true“。

我像这样打电话给处理员..。

代码语言:javascript
复制
 $.ajax(     {         type: "GET",         url: "../HTML/HtmlHandler.ashx",         cache: true,         dataType: "text",         data: { html: name },         success: function(html) {             //$(function() {                 //console.log(tabname);                 //console.log("msg:" + msg);                 $("#" + name + "holder").html(html);                 //checkAllLoaded();                 ClientHome\_init('');             //});         },
代码语言:javascript
复制
    error: function(XMLHttpRequest, textStatus, errorThrown) {
    $("#" + name + "holder").html("<span>Error retrieving widget.</span>");
        //console.log("error:" + tabname);
        //checkAllLoaded();
    }
}

,我还需要检查什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-03-29 16:23:47

为了防止其他人有这个问题,将IRequiresSessionState改为IReadOnlySessionState为我解决了这个问题。

票数 3
EN

Stack Overflow用户

发布于 2010-03-26 19:43:09

您的问题可能与服务器代码无关。javascript的本质是它是同步的。即使在使用异步AJAX请求时,我也发现javascript很少允许您同时发出两个HTTP请求。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2526168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档