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

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

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

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

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».

0 голосов
/ 26 ноября 2018

Есть ли триггер ошибок при работе с веб-заданием?

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

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

...