有没有办法在没有锁定ASP.Net MVC站点的情况下使用会话?

时间:2015-02-25 11:08:23

标签: asp.net-mvc session redis locking

有没有办法在 ASP.Net MVC 网站上使用会话而不锁定

会话锁定机制导致许多问题;

当您的网站放慢速度一点点时,用户就会开始点击" F5"在键盘上。当他们这样做时,请求开始相互等待。所有这些请求在IIS上的挂起位于" RequestAcquireState "会话模块的状态。

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

见:

存在锁定,因为如果您未仔细设计流程,则可以操作您的工作流程。与性能问题相比,被黑客入侵是一个很大的问题......

但是如果你为共享,半一致状态存储设计了你的进程,(或者只是可能没有必要使用)我们可以完全从我们的方式中删除锁定情况吗? /强>

1 个答案:

答案 0 :(得分:2)

是的,我们可以通过“ UnlockedStateProvider ”取消锁定。

它专为MVC设计,而不是实现.Net SessionStateStoreProviderBase,因为,IIS会话模块也有锁定机制。

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

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

请看一下:

  

注意: 为高级用法而开发,而不是替换任何SessionStateProvider ......