3

我们开发了我们的自定义 HttpModule。
现在我想添加跟踪它的功能,并在标准 ASP.NET 跟踪页面(或 trace.axd)中查看跟踪结果。我尝试使用System.Diagnostics.Trace.Write("FILTER TEST");写跟踪信息。这适用于除 HttpModule 之外的任何地方。我在 web.config 中添加了一个跟踪侦听器,但它只显示在页面生命周期中编写的跟踪。如何查看我在 HttpModule 中编写的跟踪信息以及如何将此信息添加到 ASP.NET 跟踪页面?

<trace>
  <listeners>
    <add name="WebPageTraceListener"
         type="System.Web.WebPageTraceListener, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
  </listeners>
</trace>
4

2 回答 2

0

我通常使用 TraceSource,即使在自定义 HttpModule 中也能正常工作。

所有你需要的是 :

  • 声明一个源(您可以在代码中使用任意数量的源,这取决于您想要的跟踪粒度)-(有关 TraceSource 的更多信息,请点击此处):

    public class MyModule : IHttpModule
    {
        public static readonly TraceSource MyTraceSource = new TraceSource("MySource", SourceLevels.Off);
    (...)
    }
    
  • 在您的代码中,只要您需要源转储跟踪中的某些内容,请使用 TraceEvent(有关 traceEvent 方法的更多信息,请点击此处):

    MyModule.MyTraceSource.TraceEvent(TraceEventType.Information, 0, "Message that'll be dumped in the trace");
    
  • 在您的配置文件中,您可以仅在您想要的级别启用/禁用您想要的跟踪源(信息、警告、错误,...)

    <system.diagnostics>
    
        <trace autoflush="true"/>
    
        <sharedListeners>
            <add name="myListener" initializeData="..." type="..."/>
        </sharedListeners>
    
        <sources>
            <source name="MySource" switchName="VerboseSwitch" >
                <listeners>
                    <clear/>
                    <add name="myListener"/>
                </listeners>
            </source>
            <source name="OtherSource" switchName="OffSwitch" >
                <listeners>
                    <clear/>
                    <add name="myListener"/>
                </listeners>
            </source>
        </sources>
    
        <switches>
            <clear/>
            <add name="OffSwitch" value="Off"/>
            <add name="VerboseSwitch" value="Verbose"/>
            <add name="InformationSwitch" value="Information"/>
            <add name="WarningSwitch" value="Warning"/>
            <add name="ErrorSwitch" value="Error"/>
        </switches>
    
    </system.diagnostics>
    

在这里您可以找到一篇关于跟踪主题的非常棒的文章:http: //www.codeproject.com/Articles/149251/Debugging-Tracing-and-Instrumentation-in-NET-and-A

希望这可以帮助 !

于 2013-07-25T08:11:58.320 回答
0

您是否尝试过使用 System.Web.IisTraceListener?请参阅:http ://www.iis.net/learn/develop/runtime-extensibility/how-to-add-tracing-to-iis-managed-modules

于 2013-01-15T18:11:57.093 回答