返回与InternalServerError相同的全局异常处理程序(ex)

时间:2015-08-17 19:54:02

标签: c# asp.net-web-api2

我有几个控制器。每个人都有一些方法。每个方法都有一个包含相同内容的try / catch块:

    catch (Exception ex)
    {
        return InternalServerError(ex);
    }

这将以json的形式返回异常信息,这正是我所需要的。我很确定它只是序列化为json的异常对象。

我想要做的是拥有一个全局异常处理程序,这样我就可以摆脱所有的try / catch块并清理我的控制器。

这就是问题所在。我见过的样本没有归还我需要返回的内容。这就是为什么我认为这不是重复的原因。

这是我的代码,适合那些想要看到它的人。

public class GlobalExceptionHandler : IExceptionHandler

{
    public Task HandleAsync(ExceptionHandlerContext context, CancellationToken cancellationToken)
    {
        throw new NotImplementedException();
        //HttpResponseMessage response =
        //                            new HttpResponseMessage(HttpStatusCode.InternalServerError);
        //response.Content = new StringContent(JsonConvert.SerializeObject(con);
        //response.RequestMessage = Request;
        //return Task.FromResult(response);
    }
}

1 个答案:

答案 0 :(得分:0)

找到合适的article后,结果很简单:

public class GlobalExceptionHandler : IExceptionHandler

{
    public Task HandleAsync(ExceptionHandlerContext context, CancellationToken cancellationToken)
    {
        return Task.FromResult(context.Request.CreateErrorResponse(HttpStatusCode.InternalServerError, context.Exception.Message));
    }
}
相关问题