Apa perbedaan antara WebConfigurationManager dan ConfigurationManager?

102

Apa perbedaan antara the WebConfigurationManagerdan the ConfigurationManager?

Kapan saya harus menggunakan salah satu dari yang lain?

DIPERBARUI

Saya baru saja melihat WebConfigurationManager, dan untuk beberapa alasan, Anda tidak dapat mengakses string koneksi seperti yang Anda lakukan di ConfigurationManager(seperti array). Adakah yang bisa memberi tahu saya mengapa MS membuatnya seperti ini? Tampaknya merepotkan untuk mendapatkan string koneksi yang Anda perlukan menggunakan WebConfigurationManager.

DIPERBARUI LAGI dengan CAVEAT!

Jika Anda tidak memiliki referensi ke System.Configurationnamespace yang ditambahkan ke proyek Anda, maka Visual Studio akan menampilkan kesalahan saat Anda mencoba dan mengakses WebConfigurationManager.ConnectionStringsarray like!

John Bubriski
sumber
1
Menurut saya, "peringatan" tidak terlalu akurat. Saya menggunakan system.web.configuration untuk string koneksi tanpa memerlukan system.configuration
sclarson

Jawaban:

95

WebConfigurationManger tahu bagaimana menangani warisan konfigurasi dalam aplikasi web. Seperti yang Anda ketahui, mungkin ada beberapa file web.config dalam satu aplikasi - satu di root situs dan nomor apa pun di subdirektori. Anda bisa meneruskan jalur ke metode GetSection () untuk mendapatkan kemungkinan konfigurasi yang diganti.

Jika kita melihat WebConfigurationManager dengan Reflector maka semuanya menjadi jelas:

public static object GetSection(string sectionName)
{
    ...
    return ConfigurationManager.GetSection(sectionName);
}

public static object GetSection(string sectionName, string path)
{
    ...
    return HttpConfigurationSystem.GetSection(sectionName, path);
}
XOR
sumber
25

WebConfigurationManager dibuat khusus untuk aplikasi ASP.NET.

WebConfigurationManager menyediakan metode tambahan untuk memuat file konfigurasi yang berlaku untuk aplikasi Web.

ConfigurationManager juga menyediakan metode untuk memuat file konfigurasi yang berlaku untuk aplikasi ".exe".

Saya sarankan untuk melihat WebConfigurationManager dan melihat apakah itu memberi Anda sesuatu yang tidak dapat Anda lakukan dengan ConfigurationManager dan menggunakannya sebagai gantinya, jika tidak menggunakan ConfigurationManager akan membuatnya jauh lebih mudah untuk menggunakan kode Anda secara mulus antara web dan desktop aps.

Konstantin Tarkus
sumber
4

Meskipun WebConfigurationManager terletak di rakitan System.Web, ConnectionStringSettingsCollection yang dikembalikan terletak di System.Configuration.

Jika Anda mendapatkan kesalahan

Tidak dapat menerapkan pengindeksan dengan [] ke ekspresi berjenis 'System.Configuration.ConnectionStringSettingsCollection'

ketika mencoba mengakses indeks array ...

WebConfigurationManager.ConnectionStrings["Name"].ConnectionString

pastikan Anda memiliki referensi untuk perakitan System.Configuration

WDuffy
sumber
3

Tidak yakin apa yang Anda maksud tentang string koneksi.

Memanggil WebConfigurationManager.ConnectionStrings akan mengembalikan System.Configuration.ConnectionStringSettingsCollection, yang sama seperti yang akan Anda dapatkan jika memanggil ConfigurationManager.ConnectionStrings .

Jika tidak, seperti yang dikatakan XOR, ini dirancang untuk menangani beberapa web.config hierarkis, menggabungkannya sesuai kebutuhan saat Anda berpindah-pindah folder dalam suatu aplikasi.

Zhaph - Ben Duguid
sumber