ASP.net MVC - AsyncController和Session

时间:2012-01-04 16:31:05

标签: c# asp.net-mvc asynchronous

我正在玩ASP.net MVC中的异步控制器,只是为了看看它们是如何工作的。在我的一个异步操作方法中,我想通过循环几次并执行Thread.Sleep来模拟一个长时间运行的方法:

for(int x = 1; x <= 10; x++) {
    Thread.Sleep(1000);

    Session["progress"] = x * 10;
}

我想要一种快速而又脏的方式来报告长时间运行的进度,所以我只使用了会话状态。我不会在正常的应用程序中使用它,但我注意到在另一个非异步操作方法中,此会话状态未被持久化:

public ActionResult ReportProgress() {
    int progress = 0;

    if( Session["progress"] != null ) {
        progress = (int)Session["progress"];
    }

    return Json(progress);
}

在ReportProgress方法中,此会话变量始终为null。当我调试其他异步方法时,Session正在持久化。

有没有人知道为什么异步方法和同步方法似乎没有相同的会话?

0 个答案:

没有答案