ASP.NET MVC + jQuery + IIS6:多个Ajax请求

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调用立即返回).

谢谢!

Dre*_*nic 5

理论上,启用了会话状态的ASP.NET会锁定每个用户请求的会话,从而以串行方式处理它们.我不认为你可以无痛地禁用MVC项目的Session,因为TempData例如默认使用session.但你可以试试.

编辑:这是一个相关的问题

  • @Erv:我已经完成了一些阅读,因为这个答案是在标准ASP.NET中你可以在每页的基础上指定你想要的会话类型.默认情况下,我认为它是一个写入锁定,每页只允许1个请求.您可以将其更改为读取器锁定,这将允许多个读取器,但将阻止编写器,并将阻止持有锁定的编写器.我不知道如何使这些适用于ASP.NET MVC.我只想说"随处使用读卡器锁",因为我使用的会话状态并不特别. (2认同)