我已经编写Azure中托管的MVC 3应用程序。 我使用Session变量来对我的长期运行过程中的一个HTTP调用中间存储更新状态信息。 这随后被用于更新进度条。 该值可以非常迅速改变。
使用InProc会话提供商时,这一切的伟大工程。 然而,每当我改变使用Azure的缓存会话提供会话变量不从长时间运行的进程更新。
我现在改变的东西直接使用缓存的变量,这似乎工作至今。
为什么下面的方法不在缓存中使用Session时的工作,但罚款是InProc?
例如,我设置可能会启动一个会话变量在一个控制器的ActionResult
Session["OPERATION_PROGRESS"] = 0;
然后我得到一个手柄上的会话状
HttpSessionStateBase session = Session;
并将它传递给我的长期运行的过程是怎样的
LongRunningProcess.Go(session);
然后从LongRunningProcess方法中,因为它使用传递会话对象行进通过其任务是将更新会话变量。
passedSession["OPERATION_PROGRESS"]=10;
该网客户端调用传递会话变量值回更新进度条的进度页面。