是否有任何方法可以在 ASP.Net MVC 站点上不锁定使用 session ?
session 锁机制导致很多问题;
当您的网站速度变慢一点时,用户就会开始按键盘上的“F5”。当他们这样做时,请求就开始互相等待。所有这些请求在 IIS 上都挂起, session 模块的状态为“RequestAcquireState”。
如果用户同时发出请求,就会发生这种情况。因为IIS中的 session 模块和默认 session 提供程序(或者通常是自定义的)都具有锁定机制。
参见:
存在锁定,因为如果您没有仔细设计流程,您的工作流程可能会被操纵。与性能问题相比,被黑客攻击对您来说是个大问题......
但是,如果您为共享、半一致状态存储设计流程,(或者可能根本不需要使用)我们可以完全消除锁定情况吗?
最佳答案
是的,我们可以使用“UnlockedStateProvider”从我们的方式中删除锁定。
它是为MVC设计的,没有实现.Net SessionStateStoreProviderBase,因为IIS session 模块也有锁定机制。
这是一个简单的 ActionFilterAttribute 通过 HttpContext 为您提供状态存储。
它还有 Redis 提供程序,因此您可以在网络场、Azure 或 AWS 中安全地使用。
请看一下:
- https://www.nuget.org/packages/UnlockedStateProvider.Redis
- https://github.com/efaruk/playground/tree/master/UnlockedStateProvider
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/