处理405错误

时间:2017-12-18 10:16:52

标签: asp.net asp.net-web-api

我正在尝试处理从 WebApi 生成的405Method not Allowed)错误。

例如:基本上只要有人用Post请求而不是Get一个来调用我的Api,就会处理此错误。

我想以编程方式执行此操作(即没有IIS配置),现在没有处理此类错误的文档,并且在发生此异常时未触发IExceptionHandler

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

部分回复: 通过查看here中的HTTP消息生命周期,可以在HttpRoutingDispatcher之前在管道的早期添加消息处理程序。

因此,创建一个处理程序类:

public class NotAllowedMessageHandler : DelegatingHandler
{
    protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
    {
        var response = await base.SendAsync(request, cancellationToken);

        if (!response.IsSuccessStatusCode)
        {
            switch (response.StatusCode)
            {
                case HttpStatusCode.MethodNotAllowed:
                {
                    return new HttpResponseMessage(HttpStatusCode.MethodNotAllowed)
                    {
                        Content = new StringContent("Custom Error Message")
                    };
                }
            }
        }

        return response;
    }
}

在您的WebApiConfig中,在Register方法中添加以下行:

config.MessageHandlers.Add(new NotAllowedMessageHandler());

您可以检查响应的状态代码并根据它生成自定义错误消息。