Как создать семафор, доступный через 2 отдельных процесса w3wp.exe в Azure. Проблема в Azure заключается в том, что при добавлении нового элемента конфигурации приложения Azure перезапускает мой веб-сайт на новом процессе w3wp.exe, который выполняется одновременно со старым процессом w3wp.exe во время его закрытия. Я использую семафор для синхронизации между 2. Это работало до сих пор, т.е. на локальном IIS - изменения конфигурации обычно просто запускают новый домен приложения, но в Azure запускается новый процесс w3wp.exe. И этот новый процесс не распознает существующий именованный семафор.
Следующий код всегда указывает, что семафор не существует. Даже когда я создаю отдельное консольное приложение и создаю семафор, я все равно получаю, что его нет в моем веб-приложении. Кажется, что в IIS в Azure существует пространство имен для семафоров. Я видел еще одну статью о ранней версии IIS, в которой семафоры глобально распределялись между процессами только в том случае, если в качестве префикса имени использовался «Global \» - это не работает в Azure, и я не могу выяснить, что такое «глобальное» пространство имендолжно быть - есть идеи?
К вашему сведению - если я запускаю консольное приложение - 2 экземпляра - что оба получают доступ к одному семафору, они оба могут его видеть. Но 2 процесса, выполняющихся в IIS в Azure, не могут.
try
{
// Open the semaphore
//
_semaphore2 = Semaphore.OpenExisting(name);
doesNotExist = false;
}
catch (WaitHandleCannotBeOpenedException)
{
_logger.Info<MainDom>("Semaphore ({name}) does not exist", name);
doesNotExist = true;
}