C# Web API记录请求、响应,但跳过文件上载
我的日志记录过程有一些问题C# Web API记录请求、响应,但跳过文件上载,c#,asp.net-web-api,C#,Asp.net Web Api,我的日志记录过程有一些问题 protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { WebApiLogin log = new WebApiLogin(); string clientToken = ""; str
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
WebApiLogin log = new WebApiLogin();
string clientToken = "";
string clientAddress = "";
string requestUri = "";
string requestBody = "";
string responseBody = "";
HttpResponseMessage result = null;
try
{
clientToken = request.Headers.GetValues("Token").FirstOrDefault();
requestUri = request.RequestUri.AbsoluteUri;
clientAddress = HttpContext.Current.Request.UserHostAddress;
// log request body
requestBody = await request.Content.ReadAsStringAsync();
// let other handlers process the request
result = await base.SendAsync(request, cancellationToken);
if (result.Content != null)
{
// once response body is ready, log it
responseBody = await result.Content.ReadAsStringAsync();
// log full
log.Log(clientToken, clientAddress, requestUri, requestBody, responseBody);
}
else
{
// log partial
log.Log(clientToken, clientAddress, requestUri, requestBody);
}
}
catch (Exception ex)
{
log.Log(clientToken, clientAddress, requestUri, requestBody, ex.Message);
}
return result;
}
在这一行:
var httpRequest = HttpContext.Current.Request;
由于HttpContext为null,我出现了“未设置对象引用”错误。我猜是由于log方法上的异步调用之间的延迟
停止日志方法“null reference”错误停止
有没有办法解决这个问题,我是说,记录json和文件上传
如果没有,是否可以在涉及文件上载时跳过此日志记录
提前感谢,我不了解这些方法之间的关系。我错过什么了吗?我也没有!但是,当启用此日志方法时,HttpContext.Current.Request为null,并且当我注释时,覆盖方法工作正常。所以我猜异步操作会把我的上传程序搞砸。我不明白这些方法是如何联系在一起的。我错过什么了吗?我也没有!但是,当启用此日志方法时,HttpContext.Current.Request为null,并且当我注释时,覆盖方法工作正常。所以我想异步操作会把我的上传程序搞砸。
var httpRequest = HttpContext.Current.Request;