ASP.NET MVC : how to prevent a session lock?

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

我有一个应用程序,其中有一些 Controller 的操作调用缓慢的第 3 方 Web 服务。这些操作是使用页面中的 AJAX 调用来调用的。

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

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

  1. 接受用户的慢动作请求
  2. 根据 session 数据检查用户访问 Controller /操作的权限
  3. 如果需要,向 session 写入一些内容
  4. 调用session_write_close()从此请求关闭 session ,来自同一用户的任何其他请求都可以访问它
  5. 进行慢速调用(可能以某种异步方式)

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

有什么想法吗?

最佳答案

我认为这可能有几种情况。

1) 在 Controller 工厂中进行更改,并将其更改为生成没有 session 或使用某些自定义 session 实现的 Controller

2)尝试阅读此article about sessionless controllers

关于ASP.NET MVC : how to prevent a session lock?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12265490/

相关文章:

asp.net - ListView LayoutTemplate 在为空时不显示 asp.net

asp.net - 在多个网站之间共享缓存

c# - 除非使用 TextBoxFor,否则 MVC 模型子列表在发布时为 null

android - 在 session 之间记住我功能

java - 防止大上传 session 超时

nHibernate 多对多映射和延迟加载

c# - 读取和写入 HTTP header

asp.net-mvc - 在 ASP .Net MVC Controller 中查看每个条件

asp.net-mvc - 如何使用Paypal自动将公司账户的金额存入私有(private)账户

c# - 缺少事件处理程序创建支持