我正在尝试处理从 WebApi 生成的405
(Method not Allowed
)错误。
例如:基本上只要有人用Post请求而不是Get一个来调用我的Api,就会处理此错误。
我想以编程方式执行此操作(即没有IIS配置),现在没有处理此类错误的文档,并且在发生此异常时未触发IExceptionHandler
。
有什么想法吗?
答案 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());
您可以检查响应的状态代码并根据它生成自定义错误消息。