Корпоративная библиотека 6 вход в базу данных и электронная почта не работают на сервере

#c# #asp.net #enterprise-library #iis-8.5

#c# #asp.net #enterprise-библиотека #iis-8.5

Вопрос:

Я настроил ведение журнала электронной почты и базы данных с помощью Enterprise Library 6 в приложении .NET 4.5 MVC.

Все это хорошо работает при запуске в Visual Studio. Однако при развертывании на сервере он не работает, ничего не регистрируется.

Вот конфигурация, настроенная в web.config:

 <configuration>
  <configSections>
    <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
    <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
  </configSections>

  <!--logging start-->
  <loggingConfiguration name="Logging Application Block" tracingEnabled="true"
    defaultCategory="General" logWarningsWhenNoCategoriesMatch="true">
    <listeners>
      <add name="Database Trace Listener" type="Microsoft.Practices.EnterpriseLibrary.Logging.Database.FormattedDatabaseTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging.Database"
        listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Database.Configuration.FormattedDatabaseTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging.Database"
        databaseInstanceName="procLoggingConnection" writeLogStoredProcName="WriteLog"
        addCategoryStoredProcName="AddCategory" formatter="Text Formatter"
        traceOutputOptions="None" filter="All" />
      <add name="Email Trace Listener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.EmailTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.EmailTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        toAddress="test@test.com" fromAddress="test@test.com"
        subjectLineStarter="Test subject: " subjectLineEnder=" "
        smtpServer="mailserver" formatter="Text Formatter" />
    </listeners>
    <formatters>
      <add type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging"
        template="Timestamp: {timestamp} Message: {message} Category: {category} Priority: {priority} EventId: {eventid} Severity: {severity} Title:{title} Machine: {machine} Application Domain: {appDomain} Process Id: {processId} Process Name: {processName} Win32 Thread Id: {win32ThreadId} Thread Name: {threadName} Extended Properties: {dictionary({key} - {value} )}"
        name="Text Formatter" />
    </formatters>
    <categorySources>
      <add switchValue="All" name="General">
        <listeners>
          <add name="Database Trace Listener" />
          <add name="Email Trace Listener" />
        </listeners>
      </add>
    </categorySources>
    <specialSources>
      <allEvents switchValue="All" name="All Events">
        <listeners>
          <add name="Database Trace Listener" />
        </listeners>
      </allEvents>
      <notProcessed switchValue="All" name="Unprocessed Category" />
      <errors switchValue="All" name="Logging Errors amp;amp; Warnings" />
    </specialSources>
  </loggingConfiguration>
  <dataConfiguration defaultDatabase="procLoggingConnection" />
  <!--logging end-->

  <connectionStrings>
    <add name="procLoggingConnection" connectionString="my connection string here"
      providerName="System.Data.SqlClient" />
  </connectionStrings>
  <system.web>
    <customErrors mode="Off" />
    <authentication mode="Windows" />
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" maxRequestLength="1048576" />
  </system.web>
</configuration>
 

У меня есть этот код в файле global.asax:

  protected void Application_Start()
    {
        IConfigurationSource configurationSource = ConfigurationSourceFactory.Create();
        LogWriterFactory logWriterFactory = new LogWriterFactory(configurationSource);
        DatabaseFactory.SetDatabaseProviderFactory(new DatabaseProviderFactory());
        Logger.SetLogWriter(logWriterFactory.Create(), false);
    }
 

При записи журнала я делаю это так:

 var logEntry = new LogEntry
    {
        Title = "test log entry",
        Message = fullExceptionInfo,
        Severity = System.Diagnostics.TraceEventType.Error,
        TimeStamp = DateTime.Now
    };

    Logger.Write(logEntry);
 

Я бы хотел, чтобы все это работало на сервере.

Комментарии:

1. Попробуйте запустить отладчик на сервере и посмотрите, выдает ли он ошибку при записи ошибки. Это может быть проблема с правами доступа к файлам.

2. @BlueEyedBehemoth Я запустил удаленный отладчик на сервере. Регистратор. Вызов Write не выдает ошибку.

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