我有一个应用程序,它有一些控制器的动作调用慢的第 3 方网络服务。使用页面中的 AJAX 调用来调用这些操作。
我可以使用异步控制器来释放 ASP.NET 线程池,这很棒。但是会话呢?如果我使用 InProc 会话并请求“慢动作”,则特定用户无法向应用程序发出任何请求,因为他的会话被第一次“慢”调用锁定。
在 PHP 中有一个方法session_write_close()
,我可以使用如下:
- 接受用户的慢动作请求
- 根据会话数据检查用户访问控制器/操作的权限
- 如果需要,在会话中写一些东西
- 打电话
session_write_close()
。从此请求关闭会话,来自同一用户的任何其他请求都可以访问它 - 打慢电话(也许以某种异步方式)
我知道我可以使用[SessionState]
属性在控制器级别禁用会话状态,但这不是解决方案。
有任何想法吗?