Asp.net 捕获所有WebAPI请求

Asp.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

我想捕获WebAPI应该处理的所有请求,并将其保存在日志文件中

刚刚尝试从控制器构造函数保存请求。内容,但不幸的是, 控制器构造函数作用域中的请求对象为null


希望学习一种有效的方法来做这件事

我只想挂接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方法中是必需的。无论如何,谢谢你。