我想实现一个提供程序来执行错误记录,但是在抛出错误时永远不会调用我的提供程序。
我的提供者类看起来像:
namespace DynF
{
public class LoggingProvider : System.Web.Management.BufferedWebEventProvider
{
public override void ProcessEventFlush(WebEventBufferFlushInfo flushInfo)
{
System.Diagnostics.Debug.WriteLine("logging!");
}
public override void ProcessEvent(WebBaseEvent eventRaised)
{
System.Diagnostics.Debug.WriteLine("logging!");
}
public override void Initialize(string name, System.Collections.Specialized.NameValueCollection config)
{
System.Diagnostics.Debug.WriteLine("logging!");
}
public override void Shutdown()
{
System.Diagnostics.Debug.WriteLine("logging!");
}
}
}
在我的web.config中我有:
<system.web>
<healthMonitoring enabled="true">
<eventMappings>
<clear/>
<add name="All Errors"
type="System.Web.Management.WebBaseErrorEvent, System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"
startEventCode="0"
endEventCode="2147483647"/>
</eventMappings>
<providers>
<clear/>
<add name="LoggingProvider" type="DynF.LoggingProvider"/>
</providers>
<rules>
<clear/>
<add name="LogAllErrors"
eventName="All Errors"
provider="LoggingProvider"/>
</rules>
</healthMonitoring>
</system.web>
当运行抛出NonImplementedException的测试页时,LoggingProvider永远不会输出“logging!” (并且无论在LoggingProvider类中的哪个位置都没有断点使应用程序停止)。我阅读了this教程,据我所知,这应该足以让它发挥作用。
我在这里失踪的是什么?
答案 0 :(得分:1)
我需要将buffermode添加到false。
<add name="LoggingProvider" type="DynF.LoggingProvider" buffer="false"/>