Отключить * все * обработку исключений в ASP.NET Web API 2 (чтобы освободить место для моего собственного)?

Я хочу подключить обработку исключений в компонент промежуточного программного обеспечения, что-то вроде этого:

public override async Task Invoke(IOwinContext context)
{
    try
    {
        await Next.Invoke(context);
    }
    catch (Exception ex)
    {
        // Log error and return 500 response
    }
}

Однако, некоторые из исключений, которые я хотел бы поймать, были пойманы и преобразованы вHttpErrorResponseс помощью конвейера Web API, прежде чем я смогу добраться до них. В процессе я теряю много деталей об ошибках, поэтому не могу получить полезные трассировки стека при отладке и т. Д. (Отладчик даже не останавливается, когда выдается исключение - мне нужно вручную пройтись по коду и посмотреть, где это не удается ...).

Я попытался добавить пользовательский обработчик исключений в следующей реализации:

public Task HandleAsync(ExceptionHandlerContext context, CancellationToken cancellationToken)
{
    var owinContext = context.Request.GetOwinContext();
    owinContext.Set(Constants.ContextK,eys.Exception, context.Exception);
    return Task.FromResult(0);
}

зарегистрирован черезconfig.Services.Replace(typeof(IExceptionHandler), new MyExceptionHandler()); в моей конфигурации запуска, но глядя на это после выполненияNext.Invoke(context) через

context.Get<Exception>(Constants.ContextKeys.Exception);

еще не дает мне все детали, которые я хочу, а также не останавливается в точке сбоя с отладчиком.

Есть ли способ, которым я могуполностью выключивсе встроенная обработка ошибок, чтобы мое промежуточное ПО могло позаботиться об этом?

осветление, так как многие люди, кажется, неправильно понимают, что я ищу:

Встроенная обработка ошибок в веб-API ловитнемного (но не все) исключения и переписывает их в 500 ответов.Я хочу пойматьвсе исключения, сделать некоторые записи, изатем испустить 500 ответовс информацией, которую я выбираю (для большинства из них см. следующий пункт).Есть также некоторые исключения, которые сигнализируют о сбоях бизнес-логики, для которых я хочу вернуть 40-кратные ошибки.Я хочу, чтобы это было в верхней части конвейера (приложения), т.е.все еще в жизненном цикле запросаЯ хочу справиться с этим, используя OWIN, чтобы сделать его переносимым на возможный сценарий будущего размещения (то есть не написано, что это приложение всегда будет размещаться на IIS - модули HTTP, Global.asax.cs и др. Не имеют значения Вот).

Ответы на вопрос(5)

Ваш ответ на вопрос