ASP.NET web.config: configSource vs atribut file

187

Dalam web.config-file dalam aplikasi ASP.NET-beberapa bagian konfigurasi, seperti appSettingsdan connectionStrings, mendukung atribut filedan configSource.

Apa perbedaan antara menggunakan file-atribut dan configSource-atribut? Kapan Anda harus menggunakan atribut mana dan dapatkah Anda menggunakan keduanya?

<?xml version="1.0"?>
<configuration>
  <appSettings file="AppSettings.config">
  </appSettings>
  <connectionStrings configSource="ConnectionStrings.config">      
  </connectionStrings>
  <!-- ... -->
</configuration>
Seb Nilsson
sumber

Jawaban:

300

file atribut

configSource atribut

The fileAtribut menentukan file eksternal yang berisi pengaturan kustom seperti yang Anda lakukan dalam entri appSettings dari file web.config. Sementara itu, file eksternal yang ditentukan dalam configSourceatribut berisi pengaturan untuk bagian yang Anda mendeklarasikan sumber configSource. Misalnya, jika Anda menggunakan configSourceatribut bagian halaman, maka file eksternal akan berisi pengaturan untuk bagian halaman.

Pengaturan khusus yang dinyatakan dalam konfigurasi eksternal yang ditentukan dalam fileatribut akan digabungkan dengan pengaturan di appSettings bagian dalam web.configfile. Sementara itu, para configSource tidak tidak mendukung penggabungan, itu berarti bahwa Anda harus memindahkan seluruh pengaturan bagian ke dalam file eksternal.

http://www.codeproject.com/Messages/1463547/Re-difference-between-configSource-and-file-attrib.aspx

Massimiliano Peluso
sumber
10
Atribut "file" juga memungkinkan Anda menentukan file di luar pohon direktori langsung, yang penting untuk berbagi pengaturan umum di antara berbagai situs. Sayangnya, atribut "configsource" membatasi Anda ke file di dalam pohon torrent, jadi untuk pengaturan bersama Anda perlu menentukan direktori virtual di IIS.
Ed Graham
6
Komentar saya di atas tidak sepenuhnya benar, dan saya tampaknya melewatkan jendela lima menit yang agak acak untuk mengeditnya! Anda tidak dapat mengatur direktori virtual di IIS untuk memungkinkan file "configsource" untuk hidup di luar pohon direktori langsung. Jadi itu sebenarnya sangat membatasi. Saya memecahkannya dengan menggunakan titik persimpangan (atau tautan keras NTFS) tetapi tidak sepenuhnya cantik ...
Ed Graham
1
WAO! Jawaban yang bagus ... ini benar-benar membantu saya: will not cause web application to restart when modifying the specified file. Saya perlu aplikasi untuk memulai kembali ketika memodifikasi pengaturan di file eksternal untuk bagian kustom dan dengan demikian cara untuk pergi adalah dengan configSource. Yang menarik adalah saya menggunakan filedan bagian yang berbeda bekerja. filejuga bekerja untuk bagian selain appSettingstetapi ada Gotcha yang dijelaskan dengan baik dalam jawabannya.
Leniel Maccaferri
4
Saya ingin menambah daftar configSource: It must refer to a file in the same directory or in a subdirectory as the configuration file.. Dan juga untuk daftar file: It can reside outside the directory of the configuration file itself..
frankhommers
2
Tautan yang diperbarui untuk elemen appSettings - docs.microsoft.com/en-us/dotnet/framework/configure-apps/…
Jarrod