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("#,###")
           }
    }
}

2 つの連続した要求を行う場合:

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

B 要求は A 要求の前に完了します。これは、TestsControllers を

[SessionState(SessionStateBehavior.Required)]

2 つの要求が行われた順序で完了することを期待します。

私が間違っていることは何ですか?

4

1 に答える 1

3

コントローラーを属性で装飾するだけ[SessionState(SessionStateBehavior.Required)]では不十分です。実際には、このアクション内でセッションに書き込みを行う必要があります。また、同じセッションから同時読み取りを行う可能性があるため、読み取りだけでは不十分です。また、これらの AJAX 要求を送信する前に、クライアントでセッション cookie が作成されていることを確認してください。たとえば、ビューを提供したコントローラー アクションでセッションに値を書き込むことによって行います。

于 2013-04-07T10:33:16.453 に答える