锁定语句和MVC

时间:2012-06-07 14:14:08

标签: c# asp.net-mvc locking

在MVC中使用锁定POST是否合理?是否存在使用会使锁无效的webfarm的情况?我通常使用数据库锁,但我的特殊情况很难管理,并且使用Monitor更简单。我不想讨论为什么我需要一个锁,只是想知道是否存在无法按预期工作的情况。

private static object Lockable = new Object(); 
public ActionResult Submit() 
{
     lock(Lockable)
     {


     }   
}

2 个答案:

答案 0 :(得分:3)

为了实现对webfarm的锁定,您需要在网络上拥有共享资源(例如缓存服务器),并且需要使用它来实现webfarm安全锁定。我认为这是最简单的解决方案。

您还可以隔离要序列化呼叫的组件,并通过网络访问它。

还有另一种选择,即创建可以登记到分布式事务中的MSDTC兼容组件,以便强制所有呼叫者序列化其呼叫。但是,这需要设置所有环境以使用MSDTC,Enterprise Services等。

答案 1 :(得分:1)

正如您自己所说,在少量Web服务器/不同进程的情况下,您的锁只能用于当前进程,这意味着它不会影响其他正在运行的应用程序实例(如果存在)。