【发布时间】:2008-12-10 11:51:17
【问题描述】:
我正在使用全局命名互斥锁来实现 ASP.NET 应用程序和控制台应用程序之间的文件访问同步。
在运行 ASP.NET 应用程序时,控制台应用程序未能按预期获取互斥锁。在运行控制台应用程序时,ASP.NET 应用程序抛出 UnauthorizedAccessException: Access to the path 'Global\TheNameOfTheMutex' is denied.
我将尝试捕获异常并将其视为未能获取互斥锁,但我想知道它为什么会这样?如果从两个不同的浏览器访问 ASP.NET 应用程序,则它会按预期运行,并且控制台应用程序在运行多个实例时也会按预期运行。
更新:在 Windows XP 上,当 ASP.NET 应用程序正在运行并且我尝试启动控制台应用程序时也会引发异常。
用于同步的代码在一个通用程序集中:
using (Mutex m = new Mutex(false, "Global\\TheNameOfTheMutex")) // exception thrown
{
try
{
lock = m.WaitOne(0, false);
}
catch (AbandonedMutexException)
{
// ...
}
if(lock)
{
// ...
m.ReleaseMutex();
}
}
环境:Windows Server 2008、IIS 7、ASP.NET 2.0
【问题讨论】: