我正试图在全局范围内处理异常。我的exceptionHandlerClass来了
public override void Handle(ExceptionHandlerContext context)
{
HttpResponseMessage resp;
resp = new HttpResponseMessage(HttpStatusCode.BadRequest)
{
Content = new StringContent(context.Exception.Message),
ReasonPhrase = context.Exception.Message
};
context.Result = new ErrorMessageResult(context.Request, resp);
}
}
public class ErrorMessageResult : IHttpActionResult
{
private readonly HttpResponseMessage _httpResponseMessage;
private HttpRequestMessage _request;
public ErrorMessageResult(HttpRequestMessage request, HttpResponseMessage httpResponseMessage)
{
_request = request;
_httpResponseMessage = httpResponseMessage;
}
}WebApiConfig.cs中已注册的异常处理程序
config.Services.Replace(typeof(IExceptionHandler), new GlobalExceptionHandler());下面是httppost和httpget控制器中的操作
[Route("ArgumentNull/{id}")]
[HttpPost]
public IHttpActionResult ArgumentNull(int id)
{
Report objModel = new Report();
objModel.ThrowItemNotFoundException();
return Ok();
}
[Route("ArgumentNull/{id}")]
[HttpGet]
public IHttpActionResult ArgumentNullGet(int id)
{
Report objModel = new Report();
objModel.ThrowItemNotFoundException();
return Ok();
}因此,对httpget的响应是在globalExceptionHandler类中捕获的,但是httpPost只是抛出了堆栈跟踪(不需要的信息)的错误,如果我遗漏了一些东西,请有人告诉我。
发布于 2019-03-21 23:24:53
您的GlobalExceptionHandler类似乎实现了ExceptionHandler,它具有ShouldHandle方法。当请求方法为POST或PUT等场景时,此方法返回false。要解决此问题,请考虑重写该方法以返回true:
public override bool ShouldHandle(ExceptionHandlerContext context)
{
return true;
}https://stackoverflow.com/questions/36418748
复制相似问题