HttpRequestMessage 未设置为对象的实例
HttpRequestMessage not set to an instance of an object
我通过创建一个新的 ITraceWriter
为我的 Web API 应用程序启用了跟踪。一切正常,但是我没有从我的 TraceRecord
中获取请求详细信息,因为它抛出一个异常,说明它们未设置为对象的实例。
public class LogTracer : ITraceWriter
{
public void Trace(HttpRequestMessage request, string category,
TraceLevel level, Action<TraceRecord> traceAction)
{
TraceRecord traceRecord = new TraceRecord(request, category, level);
traceAction(traceRecord);
WriteTrace(traceRecord);
}
protected void WriteTrace(TraceRecord traceRecord)
{
var message = string.Format("\r\n\t{0} {1}\r\n\tOperator:{2};
Operation: {3}; Message:{4}",
traceRecord.Request.Method,
traceRecord.Request.RequestUri,
traceRecord.Operator,
traceRecord.Operation,
traceRecord.Message);
System.Diagnostics.Trace.WriteLine(message, traceRecord.Category);
}
}
两者都traceRecord.Request
抛出空引用异常。我已经在我的 WebApiConfig
中注册了示踪剂,如下所示:
config.Services.Replace(typeof(ITraceWriter), new LogTracer());
我通过简单地添加解决了这个问题:
request = new HttpRequestMessage();
在 Trace
方法中我的 TraceRecord
实例上方。
我通过创建一个新的 ITraceWriter
为我的 Web API 应用程序启用了跟踪。一切正常,但是我没有从我的 TraceRecord
中获取请求详细信息,因为它抛出一个异常,说明它们未设置为对象的实例。
public class LogTracer : ITraceWriter
{
public void Trace(HttpRequestMessage request, string category,
TraceLevel level, Action<TraceRecord> traceAction)
{
TraceRecord traceRecord = new TraceRecord(request, category, level);
traceAction(traceRecord);
WriteTrace(traceRecord);
}
protected void WriteTrace(TraceRecord traceRecord)
{
var message = string.Format("\r\n\t{0} {1}\r\n\tOperator:{2};
Operation: {3}; Message:{4}",
traceRecord.Request.Method,
traceRecord.Request.RequestUri,
traceRecord.Operator,
traceRecord.Operation,
traceRecord.Message);
System.Diagnostics.Trace.WriteLine(message, traceRecord.Category);
}
}
两者都traceRecord.Request
抛出空引用异常。我已经在我的 WebApiConfig
中注册了示踪剂,如下所示:
config.Services.Replace(typeof(ITraceWriter), new LogTracer());
我通过简单地添加解决了这个问题:
request = new HttpRequestMessage();
在 Trace
方法中我的 TraceRecord
实例上方。