我正在使用全局命名互斥體進行ASP.NET應用程序和控制檯應用程序之間的文件訪問同步。C#互斥體 - 從ASP.NET和控制檯應用程序調用錯誤
運行ASP.NET應用程序時,控制檯應用程序無法獲取互斥鎖 - 如預期的那樣。在運行控制檯應用程序時,ASP.NET應用程序拋出UnauthorizedAccessException: Access to the path 'Global\TheNameOfTheMutex' is denied.
我會嘗試捕獲異常並將其視爲未能獲取該互斥鎖,但我想知道爲什麼它的行爲如此?如果從兩個不同的瀏覽器訪問ASP.NET應用程序,並且控制檯應用程序在運行多個實例時也按預期運行,則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
我的‘答案’僅僅是+1你的,因爲它看起來完全對我:) – 2008-12-10 12:11:47