【问题标题】:ASP.NET MVC: how to prevent a session lock?ASP.NET MVC:如何防止会话锁定?
【发布时间】:2012-08-29 05:33:27
【问题描述】:

我有一个应用程序,它有一些控制器操作调用慢速 3rd 方 Web 服务。使用页面中的 AJAX 调用来调用这些操作。

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

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

  1. 接受用户的慢动作请求
  2. 根据会话数据检查用户访问控制器/操作的权限
  3. 如果需要,在会话中写一些东西
  4. 致电session_write_close()从此请求关闭会话,来自同一用户的任何其他请求都可以访问它
  5. 打慢电话(也许以某种异步方式)

我知道我可以使用[SessionState] 属性在控制器级别禁用会话状态,但这不是解决方案。

有什么想法吗?

【问题讨论】:

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


【解决方案1】:

我认为可能有几种情况。

1) 在控制器工厂中进行更改,并将其更改为在没有会话或某些客户会话实现的情况下生成控制器

2) 尝试阅读此article about sessionless controllers

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2021-11-27
  • 1970-01-01
  • 2018-05-01
  • 1970-01-01
  • 2010-09-06
  • 1970-01-01
  • 2020-10-15
  • 2016-08-14
相关资源
最近更新 更多