Может ли работа службы Windows занять несколько часов?

У нас есть служба .NET Windows, которая перемещает большое количество критически важных данных из A в B транзакционным способом. Мы также должны убедиться, что все внешние компоненты, используемые в сервисе, не распределены правильно, и все очищено перед закрытием самого сервиса. Это может занять несколько часов! Причиной этого является то, что службе необходимо дождаться обратного вызова внешнего компонента, который поступает 2, 3 или 4 часов спустя.

  1. Можно ли Windows так долго ждать, пока служба завершить работу изящно?
  2. Есть ли варианты в службе, где я могу диктовать, что происходит, когда служба отключается операционной системой, например, предотвращение завершение работы в целом?
  3. также, в качестве другого сценария, что происходит, если серверу необходимо перезагрузка? Может ли служба ждать несколько часов?
  4. Есть ли ограничение на то, как долго ОС будет ждать службы, прежде чем завершить ее работу?
-121--1458601- Как использовать ELMAH для регистрации ошибок вручную Возможно ли выполнить следующие действия с помощью ELMAH? регистратор. Лог («нечто»); Я делаю следующее: попробуйте {//Код, который может вызвать исключение} catch (исключение ex) {//Мне нужно...

Можно ли сделать следующее с помощью ELMAH?

logger.Log(" something");

Я делаю что-то подобное:

try 
{
    // Code that might throw an exception 
}
catch(Exception ex)
{
    // I need to log error here...
}

Это исключение не будет автоматически регистрироваться ELMAH, потому что оно было обработано.

257
задан Peter Mortensen 16 October 2017 в 21:55
поделиться

2 ответа

Я нахожусь на ядро ASP.NET , и я использую ElmahCore.

Для ручного входа ошибок с HttpContext (в контроллере) просто запишите:

using ElmahCore;
...
HttpContext.RiseError(new Exception("Your Exception"));

В другой части Вашего приложения без HttpContext:

using ElmahCore;
...
ElmahExtensions.RiseError(new Exception("Your Exception"));
2
ответ дан 23 November 2019 в 02:43
поделиться

Используемый эта строка и это работают превосходные.

 try{
            //Code which may throw an error
    }
    catch(Exception ex){
            ErrorLog.GetDefault(HttpContext.Current).Log(new Elmah.Error(ex));
    }
0
ответ дан 23 November 2019 в 02:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: