我们已经开发了我们的自定义HttpModule。现在我想添加跟踪它的功能,并在标准ASP中查看跟踪结果。. NET跟踪页(或trace.axd)。我尝试用System.Diagnostics.Trace.Write("FILTER TEST");
来写跟踪信息。这在除了HttpModule之外的任何地方都有效。我在web中添加了一个跟踪侦听器。配置,但它只显示在页面生命周期中写入的跟踪。我如何看到我在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>
您是否尝试使用System.Web.IisTraceListener?参见:http://www.iis.net/learn/develop/runtime-extensibility/how-to-add-tracing-to-iis-managed-modules
我通常使用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