由于您提到的所有原因,我认为这是一个非常糟糕的主意,但如果我必须这样做,我会做的是使用 ASP.NET 缓存。
所以,像这样:
Cache.Add(someUniqueKeyForAUserProfile, theUserThatLockedTheRecord, null,
DateTime.Now.AddSeconds(120), Cache.NoSlidingExpiration, CacheItemPriority.Normal,
UnlockRecord)
private static void UnlockRecord(string key, object value, CacheItemRemovedReason reason) {
//This particular record went longer than 2 minutes without
//the user doing anything, do any additional cleanup here you like
}
然后在页面中您可以执行以下操作:
if (Cache[someUniqueKeyForAUserProfile] != theUserThatLockedTheRecord){
//Tell the user they can't access the page
}
这里的好处是您使用内置的 ASP.NET 缓存在两分钟后自动“解锁”记录。因此,您可以免费获得所有这些。