2009-06-30 10 views
5

Estoy usando nlog en mi proyecto. Mi web.config tiene este aspecto:Usar cadenas de conexión dos veces en el archivo web.config; otra para la configuración de Nlog

<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> 

Dos cadenas de conexión idénticas! Mi pregunta es cómo mantener solo una cadena de conexión.

Respuesta

16

Primero agregue el atributo add providerName a la cadena de conexión. A continuación, utilice connectionStringName en lugar de connectionString y consulte la cadena de conexión desde la configuración.

<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

Solo quiero agregar algo de información importante. Por supuesto, debería usar connectionStringName, pero también debería agregar el atributo providerName a la cadena de conexión (por ejemplo, providerName = "System.Data.SqlClient" para ms sql server). Sin él, NLog arroja el error: "Esperando una cadena no vacía para 'providerInvariantName' parameter". –

+0

Pero, ¿dónde pongo la sección connectionStrings? env.ConfigureNLog ("nlog.config"); me arroja un error que no puede confirmar el nombre de la cadena de conexión en la sección – flexxxit

+0

@flexxxit - esa es una pregunta diferente. Ver http://stackoverflow.com/questions/26882704/where-to-place-connection-string-in-web-config –

6

Debe ser posible con la propiedad ConnectionStringName del elemento de destino.

Por ejemplo:

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

Esto se entra a la cadena de conexión de la sección connectionStrings directamente.

Cuestiones relacionadas