Tôi đang sử dụng một mutex được đặt tên chung cho đồng bộ hóa truy cập tệp giữa một ứng dụng ASP.NET và một ứng dụng giao diện điều khiển.C# mutex - lỗi gọi từ ASP.NET và giao diện điều khiển ứng dụng
Trong khi chạy ứng dụng ASP.NET, ứng dụng bảng điều khiển không có được mutex - như mong đợi. Trong khi chạy ứng dụng giao diện điều khiển, ứng dụng ASP.NET ném UnauthorizedAccessException: Access to the path 'Global\TheNameOfTheMutex' is denied.
Tôi sẽ cố gắng loại trừ ngoại lệ và xử lý nó giống như nó không có được mutex, nhưng tôi muốn biết tại sao nó hoạt động như thế này? Ứng dụng ASP.NET chạy như mong đợi nếu nó được truy cập từ hai trình duyệt khác nhau và các ứng dụng giao diện điều khiển cũng chạy như mong đợi khi chạy nhiều phiên bản.
Cập nhật: trên Windows XP ngoại lệ cũng được ném khi ứng dụng ASP.NET đang chạy và tôi cố gắng khởi động ứng dụng bảng điều khiển.
Các mã được sử dụng để đồng bộ hóa là trong một hội đồng chung:
using (Mutex m = new Mutex(false, "Global\\TheNameOfTheMutex")) // exception thrown
{
try
{
lock = m.WaitOne(0, false);
}
catch (AbandonedMutexException)
{
// ...
}
if(lock)
{
// ...
m.ReleaseMutex();
}
}
Môi trường: Windows Server 2008, IIS 7, ASP.NET 2.0
'câu trả lời' tôi là chỉ để 1 của bạn, vì nó có vẻ chính xác với tôi :) –
điểm cao trong ngày của tôi - Jon Skeet đã nói chuyện với tôi => Và ngày vui vẻ đồng ý –