J'utilise un mutex global nommé pour la synchronisation d'accès au fichier entre une application ASP.NET et une application console. Lors de l'exécution de l'application ASP.NET, l'application de la console ne parvient pas à acquérir le mutex, comme prévu, pendant l'exécution de l'application ASP.NET. Lors de l'exécution de l'application console, l'application ASP.NET lance UnauthorizedAccessException: Access to the path 'Global\TheNameOfTheMutex' is denied.
C# mutex - appel d'erreur depuis ASP.NET et l'application console
Je vais essayer d'attraper l'exception et de la traiter comme si elle n'avait pas réussi à acquérir le mutex, mais je veux savoir pourquoi elle se comporte ainsi? L'application ASP.NET s'exécute comme prévu si elle est accessible à partir de deux navigateurs différents et les applications de console s'exécutent également comme prévu lors de l'exécution de plusieurs instances.
Mise à jour: sous Windows XP l'exception est également levée lorsque l'application ASP.NET est en cours d'exécution et j'essaie de démarrer l'application de console.
Le code utilisé pour la synchronisation est dans un ensemble commun:
using (Mutex m = new Mutex(false, "Global\\TheNameOfTheMutex")) // exception thrown
{
try
{
lock = m.WaitOne(0, false);
}
catch (AbandonedMutexException)
{
// ...
}
if(lock)
{
// ...
m.ReleaseMutex();
}
}
Environnement: Windows Server 2008, IIS 7, ASP.NET 2.0
Ma « réponse » est juste +1 le vôtre, comme il me semble exactement à droite :) –
le point culminant de ma journée - Jon Skeet m'a parlé => Et le jour heureux convenu –