Web Api - метод Catch 405 не разрешен

На данный момент приложение Web API возвращает тело ответа ниже для 405 - Ошибка метода не разрешена. Я пытаюсь изменить тело ответа, но я не знаю, как можно использовать обработчик делегирования, ApiControllerActionSelector или фильтр. Может ли кто-нибудь помочь мне поймать ошибку 405 на стороне сервера?

{ message: "The requested resource does not support http method 'GET'." }

Примечание. Мои контроллеры API имеют значение [RoutePrefix].

1 ответ

Вы можете использовать DelegatingHandler, чтобы перехватить исходящий ответ и переопределить его поведение следующим образом.

public class MethodNotAllowedDelegatingHandler : DelegatingHandler
{
    async protected override Task<HttpResponseMessage> SendAsync(
            HttpRequestMessage request, CancellationToken cancellationToken)
    {
        HttpResponseMessage response = await base.SendAsync(request, cancellationToken);
        if (response.StatusCode == HttpStatusCode.MethodNotAllowed)
        {
            // adjust your response here as needed...
        }
        return response;
    }
}

В Global.asax...

config.MessageHandlers.Add(new MethodNotAllowedDelegatingHandler());
Другие вопросы по тегам