c# - 为用户锁定 asp.net 中的页面

标签 c# asp.net session checkout record-locking

我遇到了锁定 asp.net 页面的问题。我们有一个用户个人资料页面,我们需要为首先打开它的用户锁定该页面。详细信息如下,数据库中有很多用户配置文件记录,我们将记录号传递给查询字符串以打开特定页面。用户单击网格中的链接按钮并以只读模式打开记录。有一个编辑按钮,可以启用所有控件,并在用户单击后使其可用。任务是将记录锁定给首先单击编辑按钮的用户。

除此之外,还有许多场景,例如用户可能会从页面导航,或者他可能会在两者之间关闭页面。在这些情况下,记录应该可供其他用户使用。 请给我一些解决方案的可能方法或示例。

提前致谢

最佳答案

出于您提到的所有原因,我认为这是一个非常糟糕的主意,但如果我不得不这样做,我会做的是使用 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 缓存自动“解锁”记录。所以你可以免费得到所有这些。

关于c# - 为用户锁定 asp.net 中的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7225195/

相关文章:

c# - 如何让非必要的计算在后台运行?

c# - 如何上传文件并将其保存在本地计算机的特定文件夹中?

php - session_start() 挂起服务器

ASP.NET 随机丢失 session 值

c# - WPF 富文本框的冲突语言设置

c# - Unity 4.6+ 通过脚本创建文本

c# - Mvc Razor 语法中的 RadiobuttonFor

c# - 优化加载和搜索速度 ASP.NET C#

ASP.Net 测试套件?

java - gwt rpc 中的 session ID cookie