Saya sedang mengembangkan komponen akses data yang akan digunakan di situs web yang berisi campuran halaman ASP dan ASP.NET klasik, dan memerlukan cara yang baik untuk mengelola pengaturan konfigurasinya.
Saya ingin menggunakan kustom ConfigurationSection
, dan untuk halaman ASP.NET ini berfungsi dengan baik. Tetapi ketika komponen dipanggil melalui interop COM dari halaman ASP klasik, komponen tersebut tidak berjalan dalam konteks permintaan ASP.NET dan karena itu tidak memiliki pengetahuan tentang web.config.
Apakah ada cara untuk memberi tahu ConfigurationManager
untuk hanya memuat konfigurasi dari jalur arbitrer (misalnya ..\web.config
jika rakitan saya ada di /bin
folder)? Jika ada maka saya berpikir komponen saya dapat kembali ke itu jika default ConfigurationManager.GetSection
kembali null
untuk bagian kustom saya.
Pendekatan lain untuk ini akan diterima!
sumber
Jawaban:
Coba ini:
sumber
var config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~/web.config");
Solusi lain adalah menimpa jalur file konfigurasi lingkungan default.
Saya menemukan solusi terbaik untuk pemuatan file konfigurasi jalur non-sepele, khususnya cara terbaik untuk melampirkan file konfigurasi ke dll.
Contoh:
Rincian lebih lanjut dapat ditemukan di blog ini .
Selain itu, jawaban lain ini memiliki solusi yang sangat baik, lengkap dengan kode untuk menyegarkan konfigurasi aplikasi dan
IDisposable
objek untuk mengatur ulang kembali ke keadaan semula. Dengan solusi ini, Anda dapat membuat konfigurasi aplikasi sementara tetap tercakup:sumber
Jawaban Ishmaeel umumnya berfungsi, namun saya menemukan satu masalah, yaitu penggunaan
OpenMappedMachineConfiguration
tampaknya kehilangan grup bagian yang Anda warisi dari machine.config. Ini berarti Anda dapat mengakses bagian kustom Anda sendiri (yang semuanya diinginkan OP), tetapi bukan bagian sistem normal. Misalnya, kode ini tidak akan berfungsi:Pada dasarnya, jika Anda meletakkan jam tangan di
configuration.SectionGroups
, Anda akan melihat bahwa system.net tidak terdaftar sebagai SectionGroup, jadi tidak bisa diakses melalui saluran normal.Ada dua cara yang saya temukan untuk mengatasi ini. Yang pertama, yang tidak saya suka, adalah mengimplementasikan ulang grup bagian sistem dengan menyalinnya dari machine.config ke web.config Anda sendiri misalnya
Saya tidak yakin aplikasi web itu sendiri akan berjalan dengan benar setelah itu, tetapi Anda dapat mengakses sectionGroups dengan benar.
Solusi kedua adalah membuka web.config Anda sebagai konfigurasi EXE, yang mungkin lebih dekat dengan fungsi yang dimaksudkan:
Saya berani mengatakan tidak ada jawaban yang diberikan di sini, baik milik saya atau Ishmaeel, yang cukup menggunakan fungsi ini seperti yang dimaksudkan oleh desainer NET. Tapi, ini sepertinya berhasil untuk saya.
sumber
Selain jawaban Ismail, metode tersebut
OpenMappedMachineConfiguration()
akan selalu mengembalikanConfiguration
objek. Jadi untuk memeriksa untuk melihat apakah itu dimuat Anda harus memeriksaHasFile
properti di mana benar berarti itu berasal dari sebuah file.sumber
Jawaban yang diterima salah !!
Ini melontarkan pengecualian berikut saat mengakses properti AppSettings:
Inilah solusi yang tepat:
sumber
Saya memberikan nilai konfigurasi ke Word hosted .nET Compoent sebagai berikut.
Komponen Perpustakaan Kelas .NET dipanggil / dihosting di MS Word. Untuk memberikan nilai konfigurasi ke komponen saya, saya membuat winword.exe.config di folder C: \ Program Files \ Microsoft Office \ OFFICE11. Anda harus dapat membaca nilai konfigurasi seperti yang Anda lakukan di .NET Tradisional.
sumber
Untuk ASP.NET gunakan WebConfigurationManager:
sumber
Gunakan pemrosesan XML:
sumber
Ini harus melakukan trik:
Sumber: https://www.codeproject.com/Articles/616065/Why-Where-and-How-of-NET-Configuration-Files
sumber