我试图在委托处理程序中捕获异常。
在我的WebApiConfig.cs中,我有:
config.MessageHandlers.Add(new TestHandler1());
我有
的委托处理程序public class TestHandler1 : DelegatingHandler
{
protected async override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
HttpResponseMessage response = null;
try
{
response = await base.SendAsync(request, cancellationToken);
}
catch (Exception ex)
{
}
return response;
}
}
我有
的控制器public class DefaultController : ApiController
{
public async Task<HttpResponseMessage> Get()
{
throw new Exception();
}
}
委托处理程序中的catch没有被捕获。为什么不呢?
答案 0 :(得分:0)
我不确定您要实现的目标,但是如果要使用标准块来捕获和处理异常,请查看以下链接:
http://www.asp.net/web-api/overview/error-handling/exception-handling
在这种情况下,我们正在创建Exception过滤器属性并在所需级别action, controller, global
添加该属性,并且在异常的情况下将调用此属性。
同时检查以下链接,因为它是自定义委托处理程序,您正尝试用于异常处理
http://weblogs.asp.net/fredriknormen/asp-net-web-api-exception-handling