2009-06-30 25 views
5

Tôi đang sử dụng nlog trong dự án của mình. Web.config của tôi trông giống như sau:Sử dụng chuỗi kết nối hai lần trong tệp web.config; một cho cấu hình 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> 

Hai chuỗi kết nối giống hệt nhau! Câu hỏi của tôi là làm thế nào để giữ chỉ một chuỗi kết nối?

Trả lời

16

Đầu tiên thêm thuộc tính add providerName vào chuỗi kết nối. Sau đó sử dụng connectionStringName thay vì connectionString và tham khảo chuỗi kết nối từ các thiết lập.

<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

Tôi chỉ muốn thêm một số thông tin quan trọng. Tất nhiên anh ta nên sử dụng connectionStringName nhưng cũng nên thêm thuộc tính providerName vào chuỗi kết nối (ví dụ providerName = "System.Data.SqlClient" cho máy chủ sql). Không có NLog ném lỗi: "Mong đợi chuỗi không trống cho tham số 'providerInvariantName'". –

+0

Nhưng tôi sẽ đặt phần connectionStrings ở đâu. env.ConfigureNLog ("nlog.config"); ném một lỗi cho tôi rằng nó không thể xay tên chuỗi kết nối trong phần – flexxxit

+0

@flexxxit - đó là một câu hỏi khác. Xem http://stackoverflow.com/questions/26882704/where-to-place-connection-string-in-web-config –

6

Có thể có thuộc tính ConnectionStringName của phần tử đích.

Đối với ví dụ:

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

này sẽ truy cập vào chuỗi kết nối từ phần connectionStrings trực tiếp.

Các vấn đề liên quan