【问题标题】:Multiple asynchronous jquery calls appear to become processed synchronously by the ASP.NET server多个异步 jquery 调用似乎由 ASP.NET 服务器同步处理
【发布时间】:2014-01-19 21:24:26
【问题描述】:

在我的页面上,我对某些数据服务进行了 5 或 6 次异步调用,以获取页面上图表的数据。响应一次返回一个,每个响应之间等待 2-3 秒,而不是尽快返回所有响应。

我的 jquery 代码工作得很好 - 根据 fiddler 和 chrome,所有调用都是同时进行的,但服务器似乎一次处理它们(正如它们一一返回所证明的那样)。

似乎 ASP.NET 端正在按顺序处理它们。在那方面的服务是 我尝试标记的服务类上的标准 WebGet 操作:

    [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, ConcurrencyMode = ConcurrencyMode.Multiple)]

但这似乎没有帮助。暂停调试器在任何时候都只显示我的代码中的一个线程。服务代码只是EntityContext创建,一个linq查询,转换成ajax,返回。

有人对调试此问题有任何提示吗?我即将使用 intellitract 来查看方法的实际调用时间等,因此请尝试准确确定它在等待什么。

【问题讨论】:

  • 此测试在哪个版本/版本的 windows/IIS 上运行?看起来更像是IIS的2/3请求并发,和在非服务器版windows上开发是一致的。

标签: jquery .net wcf asynchronous


【解决方案1】:

这是最可能的原因。您的申请是:

  1. 使用 ASP.net 会话
  2. 使用 ASP.net 兼容模式

在 ASP.net 中,如果客户端有会话并且请求处理程序具有对会话的读/写访问权限,则按顺序处理请求。

如果您的 WCF 中不需要任何 ASP.net 功能,请在 web.config 中关闭 ASP.net compatibility mode

<serviceHostingEnvironment aspNetCompatibilityEnabled="false" />

并删除任何

[AspNetCompatibilityRequirements(RequirementsMode =
                       AspNetCompatibilityRequirementsMode.Required)]

编辑: Here is a blog discussing the session problem but for ASP.net MVC

【讨论】:

  • 看起来很有希望(老实说,我不喜欢他们有这样的开销)!如果是这种情况,我可能不得不寻找另一种方法来保护我的数据服务免受网络抓取和滥用 - 有什么想法吗?
  • 网络抓取和滥用?嗯...它是您在 WCF 中使用的 ASP.net 功能吗?你的意思是授权吗?
  • 是的,授权。准确的形式授权。我什至还没有开始研究这是否会成为问题(它现在不检查身份验证),但会是吗?
猜你喜欢
  • 1970-01-01
  • 2012-02-21
  • 2012-08-30
  • 1970-01-01
  • 2011-10-08
  • 2011-12-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多