尝试捕获不使用异步webapi

时间:2016-03-27 04:25:57

标签: c# asp.net-web-api async-await

我试图在委托处理程序中捕获异常。

在我的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没有被捕获。为什么不呢?

1 个答案:

答案 0 :(得分:0)

我不确定您要实现的目标,但是如果要使用标准块来捕获和处理异常,请查看以下链接:

http://www.asp.net/web-api/overview/error-handling/exception-handling

http://blog.karbyn.com/index.php/handling-errors-in-web-api-using-exception-filters-and-exception-handlers/

在这种情况下,我们正在创建Exception过滤器属性并在所需级别action, controller, global添加该属性,并且在异常的情况下将调用此属性。

同时检查以下链接,因为它是自定义委托处理程序,您正尝试用于异常处理

http://weblogs.asp.net/fredriknormen/asp-net-web-api-exception-handling

相关问题