l46*_*kok 10 c# asp.net asp.net-mvc session http
在我的ASP.NET MVC 5应用程序中,我正在对GET控制器内部的方法执行请求,该方法需要读取存储在会话中的值.为了避免会话状态锁定问题,我已经设置SessionStateBehavior为ReadOnly类级别.
[SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)]
public class TestController: Controller
{
var test = Session["KEY"];
...
Run Code Online (Sandbox Code Playgroud)
但是,偶尔,我需要将Session变量覆盖到同一方法中的其他内容.ASP.NET MVC不允许我使用SessionStateBehaviorset来执行此操作ReadOnly.我无法设置它,Required因为我再次遇到会话状态锁定问题,阻止并发AJAX请求.
对此有什么好的解决方案?
编辑:我们正在使用SQL服务器进行会话状态管理.
小智 4
如果您的目标是 .NET Framework 4.6.2 并且您使用的是 SQL Server,则可以利用新的异步 SessionState 模块来异步访问会话存储提供程序。
下载并安装 SessionStateModule 和SqlSessionState NuGet 包。
还要考虑SQLServer 模式将会话状态存储在 SQL Server 数据库中。
注意(来自评论)
SqlSessionStateProviderAsync根据此msdn 博客,虽然 ASP.NET Core 中的会话是非锁定的,但只有下一个版本才会引入此功能才会引入此功能。
另一个不同的选项是使用StackExchange.Redis:例如,对于 Azure 应用服务中的 Web 应用程序,请遵循以下配置步骤。更一般地,在一个或多个 Redis 服务器中,RedisSessionProvider从不锁定会话
| 归档时间: |
|
| 查看次数: |
1747 次 |
| 最近记录: |