有没有办法在 ASP.Net MVC 网站上使用会话而不锁定?
会话锁定机制导致许多问题;
当您的网站放慢速度一点点时,用户就会开始点击" F5"在键盘上。当他们这样做时,请求开始相互等待。所有这些请求在IIS上的挂起位于" RequestAcquireState "会话模块的状态。
如果用户同时发出请求,则会发生这种情况。因为IIS中的会话模块和默认会话提供程序(或者通常是自定义的)都具有锁定机制。
见:
存在锁定,因为如果您未仔细设计流程,则可以操作您的工作流程。与性能问题相比,被黑客入侵是一个很大的问题......
但是如果你为共享,半一致状态存储设计了你的进程,(或者只是可能没有必要使用)我们可以完全从我们的方式中删除锁定情况吗? /强>
答案 0 :(得分:2)
是的,我们可以通过“ UnlockedStateProvider ”取消锁定。
它专为MVC设计,而不是实现.Net SessionStateStoreProviderBase,因为,IIS会话模块也有锁定机制。
这是一个简单的ActionFilterAttribute,通过HttpContext为您提供状态存储。
它还有Redis提供程序,因此您可以在Web场,Azure或AWS中安全使用。
请看一下:
注意: 为高级用法而开发,而不是替换任何SessionStateProvider ......