Web Api - Catch 405方法不允许

use*_*918 2 api http-status-code-405 web

截至目前,Web api应用程序返回以下响应正文405 - Method Not Allowed错误.我试图更改响应体,但我不知道如何使用委托处理程序,ApiControllerActionSelector或过滤器.任何人都可以帮助我捕获服务器端的405错误?

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

注意:我的api控制器具有[RoutePrefix]值.

Ben*_*ley 5

您可以使用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;
    }
}
Run Code Online (Sandbox Code Playgroud)

在Global.asax中......

config.MessageHandlers.Add(new MethodNotAllowedDelegatingHandler());
Run Code Online (Sandbox Code Playgroud)