gpt4 book ai didi

c# - 担心并发问题——我应该一次只允许 1 个用户吗?

转载 作者:行者123 更新时间:2023-11-30 15:43:08 25 4
gpt4 key购买 nike

我正在为一个项目开发一个管理工具,该项目对不同的文件进行少量读取和写入以及一些数据库查询和更新。现在我相信我们不太可能会遇到这个问题,因为我们使用这个项目的人并不多。但如果可以的话,我想在不打扰普通用户的情况下尽量减少或消除它发生的风险。我正在使用 Windows 身份验证和角色。

我的一个想法是创建一个锁,同时只允许 1 个用户进行管理。通过使用 Session.SessionID 并将其作为排他锁保存在 Application 状态。例如,如果用户想要进行管理,他首先会转到登录页面,然后检查该检查的位置(哦,我认为这不是原子性的?):

if (Application["lockedBy"] == null)
{
Application["lockedBy"] = Session.SessionID;
Application["lockedName"] = User.Identity.Name;
Response.Redirect("Admin.aspx");
}

管理页面会有一个按钮来释放锁定并重定向到另一个页面。或者,如果用户忘记在 global.asax 文件中使用 Session_End() 并进行自动刷新。但这如何阻止某人按下浏览器后退按钮并绕过它呢?

或者我应该尝试确保配置文件在写入之前没有被更改?但是我将如何保存此页面的状态。我是否应该在 session 状态下保存文件修改时间,如果它们有差异就中止保存操作?

所以问题是:我应该如何在不打扰普通用户的情况下保护我的应用程序免受并发问题的影响?

最佳答案

在访问你的文件之前调用 Application.Lock 然后你可以检查修改然后在你完成后释放锁

关于c# - 担心并发问题——我应该一次只允许 1 个用户吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7007628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com