Web API 错误记录

Web API error logging

我有一个 Web API 项目并且我添加了一个自定义异常过滤器。在此异常过滤器中,我想记录客户端发布到服务器的 JSON 数据。我似乎无法访问它。有人可以帮助我在对象中的哪个位置可以访问它吗?

actionExecutedContext.ActionContext.Request.Content 似乎是空的,但在我的模拟场景中我知道发布了有效数据。

public class MobileAppExceptionFilterAttribute : ExceptionFilterAttribute
{
    public override async void OnException( HttpActionExecutedContext actionExecutedContext )
    {
        var sb = new StringBuilder();

        sb.Append( $"Url:{actionExecutedContext.Request.RequestUri}" );

        foreach(var header in actionExecutedContext.Request.Headers)
        {
            sb.Append( $"Header:{header.Key} - {String.Join( ", ", header.Value )}" );
        }...
   }
}

在尝试访问之前,您应该检查是否确实存在要阅读的内容。

public class MobileAppExceptionFilterAttribute : ExceptionFilterAttribute
{
    public override async void OnException( HttpActionExecutedContext actionExecutedContext )
    {
        var sb = new StringBuilder();
        var request = actionExecutedContext.Request;
        sb.Append( $"Url:{request.RequestUri}" );

        foreach(var header in request.Headers)
        {
            sb.Append( $"Header:{header.Key} - {String.Join( ", ", header.Value )}" );
        }

        if(request.Method == HttpMethod.Post && request.Headers.ContentLength > 0) {
            var content = await request.Content.ReadAsStringAsync();
            sb.Append( $"Content:{content}"); 
        } 
   }
}

你能不能这样试试看能不能得到json :

   string RequestContent = "";

  RequestContent = Extract_Json_From_Request(actionContext.Request.Content);

  private string Extract_Json_From_Request(HttpContent Requestcontent) 
        {
            string RequestBody = "";

            try
            {
                var content = Requestcontent.ReadAsStringAsync().Result;
                RequestBody = content.ToString();
            }
            catch (Exception ex)
            {
                RequestBody = ex.Message;

            }
            return RequestBody;

        }