asp.net-mvc - 有没有什么方法可以在不锁定 ASP.Net MVC 站点的情况下使用 session ?

标签 asp.net-mvc session redis locking

是否有任何方法可以在 ASP.Net MVC 站点上不锁定使用 session ?

session 锁机制导致很多问题;

当您的网站速度变慢一点时,用户就会开始按键盘上的“F5”。当他们这样做时,请求就开始互相等待。所有这些请求在 IIS 上都挂起, session 模块的状态为“RequestAcquireState”。

如果用户同时发出请求,就会发生这种情况。因为IIS中的 session 模块和默认 session 提供程序(或者通常是自定义的)都具有锁定机制。

参见:

存在锁定,因为如果您没有仔细设计流程,您的工作流程可能会被操纵。与性能问题相比,被黑客攻击对您来说是个大问题......

但是,如果您为共享、半一致状态存储设计流程,(或者可能根本不需要使用)我们可以完全消除锁定情况吗?

最佳答案

是的,我们可以使用“UnlockedStateProvider”从我们的方式中删除锁定。

它是为MVC设计的,没有实现.Net SessionStateStoreProviderBase,因为IIS session 模块也有锁定机制。

这是一个简单的 ActionFilterAttribute 通过 HttpContext 为您提供状态存储。

它还有 Redis 提供程序,因此您可以在网络场、Azure 或 AWS 中安全地使用。

请看一下:

Note: Developed for advanced usage and not a replacement for any SessionStateProvider...

关于asp.net-mvc - 有没有什么方法可以在不锁定 ASP.Net MVC 站点的情况下使用 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28717430/

相关文章:

php - 在第三方调用的 WebHook 中验证用户

redis - Redis 中使用 Hset 和 HMSet 哪一个?

mysql - 在循环内使用 sequelize 更新多行

c# - 找不到类型或命名空间名称 'OpenIddictDbContext<,,>'

c# - 为什么我的 Web API 的响应格式不正确?

java - 让 csrf token 在用户 session 中 15 分钟后过期还是直接删除?

.net - 在 ASP.NET MVC 中使用 HttpContext.Current.Session 测试一个类

node.js - 在hubot brain中生成表格并插入值

javascript - AngularJS ng-模型与集合

c# - 获取枚举值