2012-02-27 92 views
0

我收到以下異常,同時試圖登錄使用企業庫5.0的錯誤:企業庫5.0日誌記錄在ASP.Net web服務項目 - 激活錯誤

Activation error occured while trying to get instance of type LogWriter, key \"\"" 

內部異常消息1:

"Resolution of the dependency failed, 
type = \"Microsoft.Practices.EnterpriseLibrary.Logging.LogWriter\", 
name = \"(none)\". 

內部異常消息2:

The type LogWriter cannot be constructed. 
You must configure the container to supply this value." 

下面的代碼:

public static void WriteException(Exception ex, string title) 
{ 
    try 
    { 
     LogEntry logEntry = new LogEntry() 
     { 
      Title = title, 
      Message = ex.Message, 
      Severity = TraceEventType.Error, 
      TimeStamp = DateTime.Now 
     }; 

     Logger.Write(logEntry);   
    } 
    catch (Exception exception) 
    { 

    } 
} 

下面是我的web.config:

<?xml version="1.0"?> 

<!-- 
    For more information on how to configure your ASP.NET application, please visit 
    http://go.microsoft.com/fwlink/?LinkId=169433 
    --> 

<configuration> 
    <configSections> 
    <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.505.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true"/> 
    <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=5.0.505.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true"/> 
    </configSections> 
    <dataConfiguration defaultDatabase="OracleConnection"> 
    <providerMappings> 
     <add databaseType="Microsoft.Practices.EnterpriseLibrary.Data.Oracle.OracleDatabase, Microsoft.Practices.EnterpriseLibrary.Data" name="Oracle.DataAccess.Client"/> 
    </providerMappings> 
    </dataConfiguration> 
    <connectionStrings> 
    <add name="PortalAdminContext" connectionString="Data Source=|DataDirectory|PortalAdmin.sdf" providerName="System.Data.SqlServerCe.4.0"/> 
    <add name="OracleConnection" connectionString="" providerName="Oracle.DataAccess.Client"/> 
    <add name="PersonalizationConnection" connectionString="" providerName="Oracle.DataAccess.Client"/> 
    </connectionStrings> 

    <system.web> 
    <compilation debug="true" targetFramework="4.0" /> 

    <authentication mode="Forms"> 
     <forms loginUrl="~/Account/Login.aspx" timeout="2880" /> 
    </authentication> 

    <membership> 
     <providers> 
     <clear/> 
     <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" 
      enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" 
      maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" 
      applicationName="/" /> 
     </providers> 
    </membership> 

    <profile> 
     <providers> 
     <clear/> 
     <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/> 
     </providers> 
    </profile> 

    <roleManager enabled="false"> 
     <providers> 
     <clear/> 
     <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" /> 
     <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" /> 
     </providers> 
    </roleManager> 

    </system.web> 

    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    </system.webServer> 

    <system.data> 
    <DbProviderFactories> 
     <remove invariant="System.Data.SqlServerCe.4.0"/> 
     <add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/> 
    </DbProviderFactories> 
    </system.data> 
    <loggingConfiguration name="" tracingEnabled="true" defaultCategory="General"> 
    <listeners> 
     <add name="Event Log Listener" 
      type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.FormattedEventLogTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.505.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
      listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.FormattedEventLogTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.505.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
      source="PortalWebservice" 
      formatter="Text Formatter" 
      log="Portal" 
      machineName="." 
      traceOutputOptions="DateTime, Timestamp" 
      filter="All"/> 
    </listeners> 
    <formatters> 
     <add type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.505.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
      template="Timestamp: {timestamp}{newline}&#xA;Message: {message}{newline}&#xA;Severity: {severity}{newline}&#xA;Title:{title}{newline}" 
      name="Text Formatter"/> 
    </formatters> 
    <categorySources> 
     <add switchValue="All" name="General"> 
     <listeners> 
      <add name="Event Log Listener"/> 
     </listeners> 
     </add> 
    </categorySources> 
    <specialSources> 
     <allEvents switchValue="All" name="All Events"> 
     <listeners> 
      <add name="Event Log Listener"/> 
     </listeners> 
     </allEvents> 
     <notProcessed switchValue="All" name="Unprocessed Category"> 
     <listeners> 
      <add name="Event Log Listener"/> 
     </listeners> 
     </notProcessed> 
     <errors switchValue="All" name="Logging Errors &amp; Warnings"> 
     <listeners> 
      <add name="Event Log Listener"/> 
     </listeners> 
     </errors> 
    </specialSources> 
    </loggingConfiguration> 
</configuration> 

的 「門戶」 事件日誌已被創建。

這個相同的代碼和相同的配置在其他項目中工作正常。但是,在嘗試登錄時,我收到ASP .Net Webservice中的激活錯誤。它似乎在嘗試創建LogWriter時無法找到Web.config。

+0

是在你的bin目錄中的日誌記錄DLL? – NotMe 2012-02-27 20:03:15

+0

是的,日誌記錄以及所有依賴項都位於bin目錄中。 – Auc 2012-02-27 20:30:06

回答

1

我注意到其他項目開始遇到與企業庫的數據庫部分相同的「激活錯誤」,更多的調查將我帶到.Net Framework 2.0的machine.config中。 machine.config中有一個常見條目,Oracle Data Provider的項目web.config。並稱,遵循web.config文件中的其他項目,糾正了「激活錯誤」,並糾正上述項目的日誌寫激活錯誤的條目:

<system.data> 
    <DbProviderFactories>  
     <remove invariant="Oracle.DataAccess.Client"/> 
     <add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=2.102.2.20, Culture=neutral, PublicKeyToken=89b483f429c47342"/> 
    </DbProviderFactories> 
    </system.data>