1

我有一个控制器

[Authorize]
[SessionState(SessionStateBehavior.Required)]
public class TestsController: Controller
{

    public JsonResult Wait(int time = 10000)
    {
           var start = DateTime.Now;
           Thread.Sleep(time);
           var end = DateTime.Now;
           var diff = (end - start);
           return Json(new
           {
               start = start.ToString("yyyy-MM-dd HH:mm:ss.fff"),
               end = end.ToString("yyyy-MM-dd HH:mm:ss.fff"),
               milliseconds = diff.TotalMilliseconds.ToString("#,###")
           }
    }
}

当我连续执行两个请求时:

A-> action = Wait, Controller = Tests, time = 10000
B-> action = Wait, Controller = Tests, time = 100

B 请求在 A 请求之前完成。这不是我所期望的,因为我已经用

[会话状态(会话状态行为。必需)]

我希望这两个请求按照发出的顺序完成。

我做错了什么?

4

1 回答 1

3

仅仅用属性装饰控制器[SessionState(SessionStateBehavior.Required)]是不够的。您实际上应该在此操作中写入会话。此外,如果您只是阅读也不够,因为您可以从同一个会话中进行并发读取。还要确保在发送这些 AJAX 请求之前在客户端上创建会话 cookie,例如通过在为视图提供服务的控制器操作中向会话写入一些值。

于 2013-04-07T10:33:16.453 回答