我有几个控制器。每个人都有一些方法。每个方法都有一个包含相同内容的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);
}
}
答案 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));
}
}