提供程序未执行

本文关键字:执行 程序 | 更新日期: 2023-09-27 17:59:13

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

我的提供者类看起来像:

   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类中的哪个位置放置断点都不会使应用程序停止)。我读过这个教程,据我所知,这应该足以让它发挥作用。

我在这里错过了什么?

提供程序未执行

我需要将buffermode添加到false。

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