Провайдер не выполняется - PullRequest
1 голос
/ 16 июня 2011

Я хочу реализовать провайдер для ведения журнала ошибок, но мой провайдер никогда не вызывается при возникновении ошибки.

Мой класс провайдера выглядит так:

   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, приложение останавливается). Я прочитал этот учебник, и, насколько я понимаю, этого должно быть достаточно, чтобы заставить его работать.

Что мне здесь не хватает?

1 Ответ

1 голос
/ 17 июня 2011

Мне нужно было добавить buffermode в false.

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