ASP.NET MVC:如何防止会话锁定?

时间:2012-09-04 14:20:32

标签: asp.net asp.net-mvc session session-state

我有一个应用程序,它有一些控制器的动作调用缓慢的第三方Web服务。使用页面中的AJAX调用调用这些操作。

我可以使用异步控制器来释放ASP.NET线程池,这很棒。但会议呢?如果我使用InProc会话并且请求“慢动作”,则特定用户不能向应用程序发出任何请求,因为他的会话被第一次“慢”调用锁定。

在PHP中有一个方法session_write_close()我可以使用如下:

  1. 接受用户减慢操作的请求
  2. 检查用户根据会话数据访问控制器/操作的权限
  3. 如果需要,可以在会话中写点东西
  4. 致电session_write_close()从此点开始,会话将被此请求关闭,来自同一用户的任何其他请求都可以访问该
  5. 慢慢拨打电话(可能是某种异步方式)
  6. 我知道我可以使用[SessionState]属性在控制器级别禁用会话状态,但这不是解决方案。

    有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我认为可能有几种情况。

1)在控制器工厂进行更改并更改它以生成没有会话或某些客户会话实施的控制器

2)尝试阅读此article about sessionless controllers