Asp.net 处理由使用HTTP请求正文的“MediaTypeFormatter”引发的异常时,记录HTTP请求正文
我有一个Web Api 2.2控制器操作,如下所示:Asp.net 处理由使用HTTP请求正文的“MediaTypeFormatter”引发的异常时,记录HTTP请求正文,asp.net,asp.net-web-api2,Asp.net,Asp.net Web Api2,我有一个Web Api 2.2控制器操作,如下所示: [HttpPost] [Route("{id}")] public void Update(int id, [FromBody] MyData data) {} HTTP客户端使用application/json消息正文发出POST请求,但有时System.Net.HTTP.Formatting.JsonMediaTypeFormatter无法解析正文包含的json,并在调用控制器操作之前抛出异常 在这种情况下,我想记录格式化程序抛出的异
[HttpPost]
[Route("{id}")]
public void Update(int id, [FromBody] MyData data) {}
HTTP客户端使用application/json
消息正文发出POST请求,但有时System.Net.HTTP.Formatting.JsonMediaTypeFormatter
无法解析正文包含的json,并在调用控制器操作之前抛出异常
在这种情况下,我想记录格式化程序抛出的异常和导致异常的JSON文本。我希望这种情况发生在生产中(以便正确地解释失败请求的失败),因此,在这里仅仅“跟踪”是不可接受的选择。我觉得这是一件可以接受的事情
乍一看,全局错误处理工具正是这里的东西。但是在我的System.Web.Http.ExceptionHandling.ieexceptionlogger
中,不再有机会阅读消息正文:
public override void OnException(HttpActionExecutedContext context)
{ string body = await context.Request.Content.ReadAsStringAsync(); // essentially
// body is an empty string! the formatter already consumed it, and it's not available now
}
对于ASP.NET和/或Web Api 2扩展点,我有哪些选项来处理MediaTypeFormatter引发的异常和记录实际请求正文