Как ведут себя веб-задания Azure, если при запуске веб-задания возникает какая-либо ошибка или исключение?

Я хочу освободить все объекты, если возникнет какое-либо исключение или ошибка при запуске веб-задания. Как я могу узнать, произошла ли ошибка. Есть ли ошибка при работе с webjob?

2 ответа

Для этого может быть два подхода:

1) Метод Try/Catch:- Вы можете вызвать почту или любое действие в блоке catch. В блоке catch вы можете отправить информацию об исключении, которое вы получили, на свою почтовую учетную запись или даже написать в любую таблицу БД или добавить ее в любую очередь.

2) Фильтр функций:- Вы можете использовать фильтр функций, который имеет атрибут фильтра исключений функций, который вызывается в любой исключительной ситуации. Вы можете найти подробности здесь: https://github.com/Azure/azure-webjobs-sdk/wiki/Function-Filters

Также есть фрагмент кода, откуда вы можете взять ссылку:

public class ErrorHandlerAttribute : FunctionExceptionFilterAttribute
{

public override async Task OnExceptionAsync(FunctionExceptionContext exceptionContext, CancellationToken cancellationToken)
{
    string body = $"ErrorHandler called. Function '{exceptionContext.FunctionName}': {exceptionContext.FunctionInstanceId} failed. ";
    CombineErrorWithAllInnerExceptions(exceptionContext.Exception, ref body);

    string[] emailList = System.Configuration.ConfigurationManager.AppSettings["SendErrorEmails"].Split(';');

    await SendEmail.SendErrorNotificationAsync("WebJob - Common Driver Error", body);
}

private void CombineErrorWithAllInnerExceptions(Exception ex, ref string error)
{
    error += $"ExceptionMessage: '{ex.Message}'.";
    if (ex is Domain.BadStatusCodeException)
    {
        error += $"Status code: {((Domain.BadStatusCodeException)ex).StatusCode}";
    }

    if (ex.InnerException != null)
    {
        error += $"InnerEx: ";
        CombineErrorWithAllInnerExceptions(ex.InnerException, ref error);
    }
} }    

Вы можете вызвать его, украсив свой метод атрибутом "ErrorHandler". Таким образом, в случае любого исключения будет вызвана функция "OnExceptionAsync".

Есть ли триггер ошибок при работе с webjob?

Около ErrorTrigger Вы могли бы обратиться к этой вики. Вы можете отправить уведомление по электронной почте, если вам нужно, или вы можете выполнить метод, который вы пишете. В документе вы можете найти некоторые примеры кода.

Что касается исключения, вы можете ловить исключения и обрабатывать их с помощью try catch,

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