提供商不执行

时间:2011-06-16 12:48:39

标签: c# asp.net logging provider

我想实现一个提供程序来执行错误记录,但是在抛出错误时永远不会调用我的提供程序。

我的提供者类看起来像:

   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教程,据我所知,这应该足以让它发挥作用。

我在这里失踪的是什么?

1 个答案:

答案 0 :(得分:1)

我需要将buffermode添加到false。

<add name="LoggingProvider" type="DynF.LoggingProvider" buffer="false"/>