ano*_*ous 1 asp.net iis asp.net-mvc jquery iis-6
我不确定问题出在哪里......
我有一个ajax请求,它检查包含列表包的页面上的包的跟踪信息:
$(".fedex_status").each(function() {
var item = this;
// some code to construct tracking_url
$.ajax({
type: "GET",
url: tracking_url,
async: true,
cache: false,
success: function(data) { $(item).html("(" + data + ")"); },
error: function() { $(item).html("request failed...");}
});
});
Run Code Online (Sandbox Code Playgroud)
因此,如果页面上有10个包(10个具有类'fedex_status'的东西),则会创建10个请求.请求工作正常,但一次返回一个结果(以串行方式).我在控制器操作中为请求的开始和停止添加了一个时间戳:
public ActionResult Fedex(string trackingNumber)
{
DateTime requestStart = DateTime.Now;
TrackingService tracking = new TrackingService();
string status = tracking.FedexTrackingNumberStatus(trackingNumber);
return Content(status + " - " + requestStart.ToString("hh:mm:ss.FFF") + " - " + DateTime.Now.ToString("hh:mm:ss.FFF"));
}
Run Code Online (Sandbox Code Playgroud)
没有时间戳重叠.因此控制器一次处理一个请求.这看起来很糟糕.
现在,ajax请求'应该'是并行的.它肯定会立即返回(它的异步).当我查看IIS日志时,请求具有与控制器操作返回相同的时间戳.
所以我的问题是:jquery不是并行发送所有的ajax请求,或者是IIS或ASP.NET只是串行处理请求.我是IIS的大菜鸟和ASP.NET的技术细节,所以它可能永远错误配置,并且一次只响应一个请求(仅限内部使用,流量低).也就是说,我也是jquery的白痴,不确定如何测试请求实际被解雇(我所知道的是$ .ajax调用立即返回).
谢谢!
理论上,启用了会话状态的ASP.NET会锁定每个用户请求的会话,从而以串行方式处理它们.我不认为你可以无痛地禁用MVC项目的Session,因为TempData例如默认使用session.但你可以试试.
编辑:这是一个相关的问题