Библиотека предприятия 5 Блок журналирования генерирует исключение SynchronizationLockException - PullRequest
2 голосов
/ 27 октября 2010

Внутри Global.asax.cs Я получаю: Метод синхронизации объектов был вызван из несинхронизированного блока кода

protected void Application_Start()
    {
        InitContainer();

        AreaRegistration.RegisterAllAreas();

        RegisterRoutes(RouteTable.Routes);

        ControllerBuilder.Current.SetControllerFactory(typeof(UnityControllerFactory));
        CheckForAndMinify();
        Logger.Write("test"); //exception
       // if (System.Diagnostics.Debugger.IsAttached)
           // MvcContrib.Routing.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);
        //RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);

    }

Окружающая среда:

  • Asp.net Mvc2
  • VS2010
  • Windows7 Enterprise 64bit
  • Unity Framework запускается до этого кода регистрации

Соответствующие записи web.config:

<section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true"/>

и

    <loggingConfiguration name="" tracingEnabled="true" defaultCategory="General">
    <listeners>
        <add name="GeneralRolling" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.RollingFlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.RollingFlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" fileName="~\App_Data\rolling2.log" formatter="Text Formatter" rollInterval="Day" rollSizeKB="2056" maxArchivedFiles="2" filter="Warning"/>
        <add name="EspionageRolling" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.RollingFlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.RollingFlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" fileName="~\App_Data\EspRolling.log" formatter="Text Formatter" rollInterval="Day" rollSizeKB="1024" maxArchivedFiles="2" traceOutputOptions="DateTime"/>
        <add name="SnapshotRolling" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.RollingFlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.RollingFlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" fileName="~\App_Data\SnapRolling.log" formatter="Text Formatter" rollInterval="Day" rollSizeKB="1024" maxArchivedFiles="2" traceOutputOptions="DateTime"/>
    </listeners>
    <formatters>
        <add type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" template="Title:{title}{newline}&#xA;Category: {category}{newline}&#xA;Message: {message}{newline}&#xA;Timestamp: {timestamp}{newline}&#xA;Priority: {priority}{newline}&#xA;EventId: {eventid}{newline}&#xA;Severity: {severity}{newline}&#xA;Machine: {localMachine}{newline}&#xA;App Domain: {localAppDomain}{newline}&#xA;ProcessId: {localProcessId}{newline}&#xA;Process Name: {localProcessName}{newline}&#xA;Thread Name: {threadName}{newline}&#xA;Win32 ThreadId:{win32ThreadId}{newline}&#xA;Extended Properties: {dictionary({key} - {value}{newline})}" name="Text Formatter"/>
    </formatters>
    <categorySources>
        <add switchValue="All" name="General">
            <listeners>
                <add name="GeneralRolling"/>
            </listeners>
        </add>
        <add switchValue="All" name="Espionage">
            <listeners>
                <add name="EspionageRolling"/>
            </listeners>
        </add>
        <add switchValue="All" name="SnapShot">
            <listeners>
                <add name="SnapshotRolling"/>
            </listeners>
        </add>
    </categorySources>
    <specialSources>
        <allEvents switchValue="All" name="All Events">
            <listeners>
                <add name="GeneralRolling"/>
            </listeners>
        </allEvents>
        <notProcessed switchValue="All" name="Unprocessed Category"/>
        <errors switchValue="All" name="Logging Errors &amp; Warnings">
            <listeners>
                <add name="GeneralRolling"/>
            </listeners>
        </errors>
    </specialSources>
</loggingConfiguration>

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

Конфигурация logging xml не изменилась, ранее она работала. Основным изменением было добавление Unity и переключение приложения с linq на sql. Я не подтвердил, работает ли этот код в среде развертывания, поэтому может случиться так, что по какой-то причине он работает в правильной среде, а не локально.

1 Ответ

0 голосов
/ 23 февраля 2011

Если вы запускаете приложение вне Visual Studio, происходит ли сбой? То, что вы видите, это проблема с Unity и кое-что о том, как он создает синглтоны. Если вы установите vs для показа только необработанных пользовательских исключений, вы больше не увидите его. У меня была такая же проблема только сейчас. Это отсталый. Я не видел этого в Enterprise Library 4, просто в 5.

...