2009-06-30 4 views
5

Ich verwende nlog in meinem Projekt. Mein web.config sieht so aus:Verbindungszeichenfolgen zweimal in der Datei web.config verwenden; ein anderes für Nlog Config

<connectionStrings> 
    <add name="SQL_ConnStr" connectionString="Initial Catalog=ConfigDB;Provider=SQLOLEDB; Data Source=mysqlserver; User ID=sa; Password=sa; Persist Security Info=True;"/> 
</connectionStrings> 
... 
<nlog> 
<targets> 
    <target name="database" type="Database" dbProvider="sqlserver" **connectstring="Initial Catalog=ConfigDB;Provider=SQLOLEDB; Data Source=mysqlserver; User ID=sa; Password=sa"** commandText="INSERT INTO ..."> 
</target> 
</targets> 
<rules> 
<logger name="*" minlevel="Debug" writeTo="database"/> 
</rules> 
</nlog> 

Zwei identische Verbindungszeichenfolgen! Meine Frage ist, wie man nur eine Verbindungsschnur behält?

Antwort

16

Fügen Sie zuerst das Attribut add providerName zur Verbindungszeichenfolge hinzu. Verwenden Sie dann connectionStringName anstelle von connectionString und verweisen Sie auf die Verbindungszeichenfolge aus den Einstellungen.

<connectionStrings> 
    <add name="SQL_ConnStr" 
     providerName="System.Data.SqlClient" 
     connectionString="Initial Catalog=ConfigDB;Provider=SQLOLEDB; Data Source=mysqlserver; User ID=sa; Password=sa; Persist Security Info=True;"/> 
</connectionStrings> 
... 
<nlog> 
    <targets> 
    <target name="database" 
      type="Database" 
      dbProvider="sqlserver" 
      connectionStringName="SQL_ConnStr" 
      commandText="INSERT INTO ..."> 
    </target> 
    </targets> 
    <rules> 
    <logger name="*" 
      minlevel="Debug" 
      writeTo="database"/> 
    </rules> 
</nlog> 
+5

Ich möchte nur einige wichtige Informationen hinzufügen. Natürlich sollte er connectionStringName verwenden, aber er sollte auch providerName attribute der Verbindungszeichenfolge hinzufügen (zum Beispiel providerName = "System.Data.SqlClient" für ms sql server). Ohne es gibt NLog einen Fehler aus: "Erwartet eine nicht leere Zeichenfolge für den Parameter 'providerInvariantName'". –

+0

Aber wo stelle ich den connectionStrings Abschnitt. env.ConfigureNLog ("nlog.config"); löst einen Fehler für mich aus, dass es den Verbindungszeichenfolgennamen im Abschnitt – flexxxit

+0

@flexxxit nicht reparieren kann - das ist eine andere Frage. Siehe http://stackoverflow.com/questions/26882704/where-to-place-connection-string-in-web-config –

6

Dies sollte mit der Eigenschaft ConnectionStringName des Zielelements möglich sein.

Für Ex:

<targets> 
    <target name="database" type="Database" connectionStringName="SQL_ConnStr" commandText="INSERT INTO ..."> 
</target> 

Dies wird die Verbindungszeichenfolge von connection direkt Abschnitt zuzugreifen.