我想在日志文件中捕获并保存我的WebAPI应处理的所有请求。
试图从控制器构造函数中保存Request.Content,但不幸的是, 请求对象在控制器构造函数范围内为空。
希望学习一种有效的方法。
答案 0 :(得分:2)
我只是想进入网络api跟踪......
http://www.asp.net/web-api/overview/testing-and-debugging/tracing-in-aspnet-web-api
从上面的文章中,您可以像这样实现ITraceWriter。此示例使用System.Diagnostics.Trace.WriteLine,但您也可以在此处插入文件。
public class SimpleTracer : ITraceWriter
{
public void Trace(HttpRequestMessage request, string category, TraceLevel level,
Action<TraceRecord> traceAction)
{
TraceRecord rec = new TraceRecord(request, category, level);
traceAction(rec);
WriteTrace(rec);
}
protected void WriteTrace(TraceRecord rec)
{
var message = string.Format("{0};{1};{2}",
rec.Operator, rec.Operation, rec.Message);
System.Diagnostics.Trace.WriteLine(message, rec.Category);
}
}
从Trace方法中可以看到,您可以在此处访问HttpRequestMessage。
答案 1 :(得分:1)
我最终实现了中间件来处理它。
public class GlobalRequestLogger : OwinMiddleware
{
public override Task Invoke(IOwinContext context)
{
// Implement logging code here
}
}
然后在你的Startup.cs:
app.Use<GlobalRequestLogger>();