C# IIS会在异步请求的每个响应之间延迟很多时间
我有一个ASP.NET MVC项目在我的开发人员机器上运行,该机器使用windows 7 ultimate和iis 7.5 我做了以下工作:C# IIS会在异步请求的每个响应之间延迟很多时间,c#,asp.net-mvc-3,iis-7.5,C#,Asp.net Mvc 3,Iis 7.5,我有一个ASP.NET MVC项目在我的开发人员机器上运行,该机器使用windows 7 ultimate和iis 7.5 我做了以下工作: var requests = ["http://myserver.com/news/details/113834", "http://myserver.com/tag/details?ids=113834&entityType=23", "http://myserver.com/publish/details?ids=113834&enti
var requests = ["http://myserver.com/news/details/113834",
"http://myserver.com/tag/details?ids=113834&entityType=23",
"http://myserver.com/publish/details?ids=113834&entityType=23",
"http://myserver.com/generalproperty/details?ids=113834&entityType=23",
"http://myserver.com/category/details?ids=113834&entityType=23"];
var f = new Date().getTime();
$.each(requests, function(k,v) {
$.ajax({
url :v,
async : true,
type :'get',
success : function(data) {
console.log(new Date().getTime() -f );
}});
})
然后,我得到以下结果(大约)125211025002067
如果我将async切换为false,则得到:14,32,49,58,68
似乎在某个地方请求正在排队,一段时间后,它只每隔500秒响应一次。
我让我的控制器返回空白文本,而不是数据库调用,所以不是数据库
针对windows 7的IIS 7.5是否有限制?一个我可以改变的设置?
我怀疑每个用户的并发请求数是最大的,或者类似的。然后它通过每500毫秒一次的响应来“惩罚”你。这样人们就不会把它当作真正的服务器了
可能吗?有什么办法可以避免吗?您一次发送多少个请求?客户端操作系统上的IIS是。超过该限制时,它将传入连接抛出到队列中,并在插槽打开时对其进行处理
长期以来,微软一直在努力确保客户操作系统不会被用来蚕食其服务器操作系统平台的销售。这显然与IIS或windows 7上的IIS无关,我也在测试服务器上尝试过,结果相同 这是由于sessionstate施加的限制,请参见底部的“并发请求和会话状态”部分: 但是,如果对同一会话发出两个并发请求(通过使用相同的SessionID值),则第一个请求将以独占方式访问会话信息。第二个请求仅在第一个请求完成后执行 但我仍然不明白为什么在第一个请求似乎完成后,它不立即发出下一个请求。500毫秒的延迟看起来很假 我遇到了这个问题,它讨论了会话状态的锁定时间 System.Web.SessionState.SessionStateModule.LOCKED\u项\u轮询\u间隔=500 这就是我一直在搜索我的代码和互联网络的神奇数字。。500! 我知道它一定在某个地方 无论如何,为了解决这个问题,我在控制器中添加了sessionstate属性,并带有只读选项
[SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)]
public class BaseController : Controller{}
了解更多信息:
尽管如此,我仍然认为有问题,为什么前一个请求不告诉系统它不再需要对sessionstate进行锁定,以便下一个请求可以完成