gpt4 book ai didi

c# - 使用 ASP.Net 跟踪打开的页面

转载 作者:行者123 更新时间:2023-11-30 21:19:56 25 4
gpt4 key购买 nike

我确定这个问题已经被问过了,但我并没有真正看到它。

如何使用 asp.net 和 C# 跟踪打开/关闭的页面?

我尝试过各种方法,包括:

  • 修改global.asax文件应用程序/ session 开始/结束操作
  • 设置页面的析构函数以向应用程序报告
  • 静态变量(全局持久化而不是逐个 session )
  • Javascript window.onloadwindow.onbeforeunload 事件处理程序

这很有教育意义,但到目前为止还没有真正的解决方案出现。

我之所以要这样做是为了防止多个用户同时修改同一个表。也就是说,我有一个表链接列表,当用户单击修改表时,我想将该链接设置为锁定,以便 NO USER 可以修改该表。如果用户关闭表修改页面,我就没有办法解锁那个表的链接。

最佳答案

您不必担心跟踪打开或关闭的页面。一旦网页由 IIS 呈现,它就像“关闭”一样好。

您需要做的是防止两个用户通过使用锁同时更新您的表...例如:

    using (Mutex m = new Mutex(false, "Global\\TheNameOfTheMutex")) 
{
// If you want to wait for 5 seconds for other page to finish,
// you can do m.WaitOne(TimeSpan.FromSeconds(5),false)

if (!m.WaitOne(TimeSpan.Zero, false))
Response.Write("Another Page is updating database.");
else
UpdateDatabase();

}

上面这段代码的作用是,当另一个页面已经在运行 UpdateDatabase 调用时,它不允许任何其他网页调用 UpdateDatabase 方法。因此没有两个页面可以同时调用 updatedatabase。

但这并不能防止第二个用户在第一次调用完成后运行 UpdateDatabase,因此您需要确保您的 UpdateDatabase 方法有适当的检查,即。它不允许更新陈旧数据。

关于c# - 使用 ASP.Net 跟踪打开的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3592845/

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