Asp.net 捕获所有WebAPI请求
我想捕获WebAPI应该处理的所有请求,并将其保存在日志文件中 刚刚尝试从控制器构造函数保存请求。内容,但不幸的是, 控制器构造函数作用域中的请求对象为nullAsp.net 捕获所有WebAPI请求,asp.net,asp.net-mvc-4,asp.net-web-api,Asp.net,Asp.net Mvc 4,Asp.net Web Api,我想捕获WebAPI应该处理的所有请求,并将其保存在日志文件中 刚刚尝试从控制器构造函数保存请求。内容,但不幸的是, 控制器构造函数作用域中的请求对象为null 希望学习一种有效的方法来做这件事 我只想挂接web api跟踪 从上面的文章中,您可以像这样实现ITraceWriter。本例使用System.Diagnostics.Trace.WriteLine,但您也可以在此插入文件写入 public class SimpleTracer : ITraceWriter { public
希望学习一种有效的方法来做这件事 我只想挂接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);
}
}
公共类SimpleTracer:ITraceWriter
{
公共无效跟踪(HttpRequestMessage请求、字符串类别、跟踪级别、,
动作追踪(反应)
{
TraceRecord rec=新的TraceRecord(请求、类别、级别);
追踪反应(rec);
写空间(rec);
}
受保护的void WriteTrace(tracercord rec)
{
var message=string.Format(“{0};{1};{2}”,
记录操作员、记录操作、记录消息);
系统.诊断.跟踪.写入线(消息,记录类别);
}
}
从Trace方法中可以看到,您可以在此处访问HttpRequestMessage。我只想挂接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);
}
}
公共类SimpleTracer:ITraceWriter
{
公共无效跟踪(HttpRequestMessage请求、字符串类别、跟踪级别、,
动作追踪(反应)
{
TraceRecord rec=新的TraceRecord(请求、类别、级别);
追踪反应(rec);
写空间(rec);
}
受保护的void WriteTrace(tracercord rec)
{
var message=string.Format(“{0};{1};{2}”,
记录操作员、记录操作、记录消息);
系统.诊断.跟踪.写入线(消息,记录类别);
}
}
从Trace方法中可以看到,您可以在此处访问HttpRequestMessage。我只想挂接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);
}
}
公共类SimpleTracer:ITraceWriter
{
公共无效跟踪(HttpRequestMessage请求、字符串类别、跟踪级别、,
动作追踪(反应)
{
TraceRecord rec=新的TraceRecord(请求、类别、级别);
追踪反应(rec);
写空间(rec);
}
受保护的void WriteTrace(tracercord rec)
{
var message=string.Format(“{0};{1};{2}”,
记录操作员、记录操作、记录消息);
系统.诊断.跟踪.写入线(消息,记录类别);
}
}
从Trace方法中可以看到,您可以在此处访问HttpRequestMessage。我只想挂接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);
}
}
公共类SimpleTracer:ITraceWriter
{
公共无效跟踪(HttpRequestMessage请求、字符串类别、跟踪级别、,
动作追踪(反应)
{
TraceRecord rec=新的TraceRecord(请求、类别、级别);
追踪反应(rec);
写空间(rec);
}
受保护的void WriteTrace(tracercord rec)
{
var message=string.Format(“{0};{1};{2}”,
记录操作员、记录操作、记录消息);
系统.诊断.跟踪.写入线(消息,记录类别);
}
}
从Trace方法可以看出,您可以在这里访问HttpRequestMessage。我最终实现了中间件来处理它
public class GlobalRequestLogger : OwinMiddleware
{
public override Task Invoke(IOwinContext context)
{
// Implement logging code here
}
}
然后在Startup.cs中:
app.Use<GlobalRequestLogger>();
app.Use();
我最终实现了中间件来处理它
public class GlobalRequestLogger : OwinMiddleware
{
public override Task Invoke(IOwinContext context)
{
// Implement logging code here
}
}
然后在Startup.cs中:
app.Use<GlobalRequestLogger>();
app.Use();
我最终实现了中间件来处理它
public class GlobalRequestLogger : OwinMiddleware
{
public override Task Invoke(IOwinContext context)
{
// Implement logging code here
}
}
然后在Startup.cs中:
app.Use<GlobalRequestLogger>();
app.Use();
我最终实现了中间件来处理它
public class GlobalRequestLogger : OwinMiddleware
{
public override Task Invoke(IOwinContext context)
{
// Implement logging code here
}
}
然后在Startup.cs中:
app.Use<GlobalRequestLogger>();
app.Use();
您可以使用log4net
或Elmah
等工具来记录请求和响应。我正在寻找不使用外部util的本机解决方案。您可以使用log4net
或Elmah
等工具来记录请求和响应,我正在寻找不使用外部UTIL的本机解决方案。您可以使用log4net
或Elmah
等工具记录请求和响应。我正在寻找不使用外部UTIL的本机解决方案。您可以使用log4net
或Elmah
等工具记录请求和响应,我正在寻找不使用外部UTIL的本机解决方案。使用OWIN为我指明了正确的方向。您本可以解释得更多一些,比如如何创建和配置Startup类以及等待它的;在重写的Invoke方法中是必需的。不管怎样,谢谢。使用OWIN为我指明了正确的方向。您本可以解释得更多一些,比如如何创建和配置Startup类以及等待它的;在重写的Invoke方法中是必需的。不管怎样,谢谢。使用OWIN为我指明了正确的方向。您本可以解释得更多一些,比如如何创建和配置Startup类以及等待它的;在重写的Invoke方法中是必需的。不管怎样,谢谢。使用OWIN为我指明了正确的方向。您本可以解释得更多一些,比如如何创建和配置Startup类以及等待它的;在重写的Invoke方法中是必需的。无论如何,谢谢你。