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;
}
我有一个 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;
}