2014-01-19 47 views
0

在我的页面上,我对一些数据服务进行了5或6次异步调用,以获取页面上图形的数据。答案每次回来一次,每次等待2-3秒,而不是尽快完成。多个异步jquery调用似乎由ASP.NET服务器同步处理

我有jquery代码工作得很好 - 根据fiddler和chrome,调用都是在同一时间完成的,但服务器似乎一次只能处理一个(如他们逐个返回所证明的那样)。

Chrome Network View

看来,ASP.NET侧依次处理。在这方面的服务是在服务类 标准WebGet操作,我已经试过了标记:

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

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

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

+0

什么版本/版本的Windows/IIS是这个测试上运行?它看起来更像是IIS具有2/3请求的并发性,这与在非服务器版本的Windows上进行开发是一致的。 – Aron

回答

2

这是最可能的原因。你的应用是:

  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

+0

看起来很有前途(说实话,我不喜欢他们有那么高的开销)!我可能不得不寻找另一种保护我的数据服务免遭网络抓取和滥用的方式 - 如果是这种情况 - 任何想法? – TheSoftwareJedi

+0

网络抓取和误用?嗯......这是你在WCF中使用的ASP.net功能吗?你的意思是授权吗? – LostInComputer

+0

是的,授权。确认授权。我甚至没有开始研究它是否会成为问题(它现在不检查auth),但它会是什么? – TheSoftwareJedi