У нас есть служба .NET Windows, которая перемещает большое количество критически важных данных из A в B транзакционным способом. Мы также должны убедиться, что все внешние компоненты, используемые в сервисе, не распределены правильно, и все очищено перед закрытием самого сервиса. Это может занять несколько часов! Причиной этого является то, что службе необходимо дождаться обратного вызова внешнего компонента, который поступает 2, 3 или 4 часов спустя.
-121--1458601-
- Можно ли Windows так долго ждать, пока служба завершить работу изящно?
- Есть ли варианты в службе, где я могу диктовать, что происходит, когда служба отключается операционной системой, например, предотвращение завершение работы в целом?
- также, в качестве другого сценария, что происходит, если серверу необходимо перезагрузка? Может ли служба ждать несколько часов?
- Есть ли ограничение на то, как долго ОС будет ждать службы, прежде чем завершить ее работу?
Можно ли сделать следующее с помощью ELMAH?
logger.Log(" something");
Я делаю что-то подобное:
try
{
// Code that might throw an exception
}
catch(Exception ex)
{
// I need to log error here...
}
Это исключение не будет автоматически регистрироваться ELMAH, потому что оно было обработано.
Я нахожусь на ядро ASP.NET , и я использую ElmahCore.
Для ручного входа ошибок с HttpContext (в контроллере) просто запишите:
using ElmahCore;
...
HttpContext.RiseError(new Exception("Your Exception"));
В другой части Вашего приложения без HttpContext:
using ElmahCore;
...
ElmahExtensions.RiseError(new Exception("Your Exception"));
Используемый эта строка и это работают превосходные.
try{
//Code which may throw an error
}
catch(Exception ex){
ErrorLog.GetDefault(HttpContext.Current).Log(new Elmah.Error(ex));
}