2009-06-30 9 views
5

Sto usando nlog nel mio progetto. Il mio web.config assomiglia a questo:Utilizzo di stringhe di connessione due volte nel file web.config; un altro per 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> 

Due stringhe di connessione identiche! La mia domanda è come mantenere solo una stringa di connessione?

risposta

16

Per prima cosa aggiungere l'attributo providerName alla stringa di connessione. Quindi utilizzare connectionStringName anziché connectionString e fare riferimento alla stringa di connessione dalle impostazioni.

<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

Voglio solo aggiungere alcune informazioni importanti. Ovviamente dovrebbe usare connectionStringName ma dovrebbe anche aggiungere l'attributo providerName alla stringa di connessione (ad esempio providerName = "System.Data.SqlClient" per ms sql server). Senza di esso, NLog genera un errore: "Aspettando una stringa non vuota per il parametro" providerInvariantName ". –

+0

Ma dove inserisco la sezione connectionStrings. env.ConfigureNLog ("nlog.config"); genera per me un errore che non è in grado di definire il nome della stringa di connessione nella sezione – flexxxit

+0

@flexxxit - questa è una domanda diversa. Vedi http://stackoverflow.com/questions/26882704/where-to-place-connection-string-in-web-config –

6

Dovrebbe essere possibile con la proprietà ConnectionStringName dell'elemento di destinazione.

Per esempio:

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

Ciò accedere alla stringa di connessione dalla sezione connectionStrings direttamente.

Problemi correlati