Веб-приложение EventWaitHandle не работает после развертывания в IIS

У меня есть веб-сервис (WS) и консольное приложение (CA).

WS принимает данные и вставляет в базу данных. CA читает эти данные и выполняет операции. Синхронизация работает следующим образом. WS имеет код:

MyProject.Web.MvcApplication.newDataServiceMessageSignal.Set()

где newDataServiceMessageSignal объявлен в файле global.asax

public static EventWaitHandle newDataServiceMessageSignal;

и на application_start присваивается следующее значение:

protected void Application_Start()
{
..
    newDataServiceMessageSignal = new EventWaitHandle(false, EventResetMode.AutoReset, "MySignalName");
..
}

В CA есть цикл while, который всегда имеет значение true, и WaitOne в EventWaitHandle

var newMessageSignal = new EventWaitHandle(false, EventResetMode.AutoReset, "MySignalName");
while(true)
{
    newMessageSignal.WaitOne();
    //Do Something Useful
}

Моя проблема заключается в том, что этот код работает нормально во время работы в IIS Express (отладка в Visual Studio), но завершается ошибкой, когда я публикую и внедряю приложение, а затем запускаю его. CA непрерывно ждет, даже если WS устанавливает сигнал (я предполагаю, что WS устанавливает сигнал как оператор, прежде чем это будет сделано в базе данных и будет успешным). Я не могу понять, почему он так себя ведет.

Любая помощь приветствуется, спасибо.

0 ответов

Другие вопросы по тегам