Saya mencoba menambahkan
<location inheritInChildApplications="false">
ke web.config aplikasi web orang tua saya tetapi tampaknya tidak berfungsi.
Orang tua saya web.config
memiliki:
<configuration>
<configSections>
</configSections>
// 10 or so custom config sections like log4net, hibernate,
<connectionStrings>
</connectionStrings>
<appSettings>
</appSettings>
<system.diagnostics>
</system.diagnostics>
<system.web>
<webParts>
</webParts>
<membership>
</membership>
<compilation>
</compilation>
</system.web>
<location ..>
<system.web>
</system.web>
</location>
<system.webServer>
</system.webServer>
Aplikasi web anak saya diatur sebagai aplikasi di IIS, dan merupakan warisan dari orangtua web.config
yang menyebabkan masalah.
Di mana tepatnya saya harus meletakkan
<location inheritInChildApplications="false">
jadi itu mengabaikan semua pengaturan berbagai web.config?
sumber
inheritInChildApplications
tidak diterima sebagai parameter yang valid untuk<location />
elemen. Situs web saya menjalankan SharePoint (2007). Saya membuat aplikasi di direktori virtual di bawah situs web ini, dikelola oleh kumpulan aplikasi sendiri. Namun, saya menghadapi konflik antara konfigurasi SharePoint dan aplikasi ini. Lihat pertanyaan ini yang saya posting di Server Fault.<location>
untuk runtime ...Perlu masuk langsung di bawah
<configuration>
simpul root dan Anda perlu mengatur jalur seperti ini:Cara yang lebih baik untuk menangani warisan konfigurasi adalah dengan menggunakan
<clear/>
konfigurasi anak di mana pun Anda tidak ingin mewarisi. Jadi jika Anda tidak ingin mewarisi string koneksi orangtua konfigurasi Anda akan melakukan sesuatu seperti ini:sumber
Saya memasukkan semuanya ke dalam:
kecuali:
<configSections/>
,<connectionStrings/>
dan<runtime/>
.Ada beberapa kasus ketika kami tidak ingin mewarisi beberapa bagian
<configSections />
, tetapi kami tidak dapat memasukkan<section/>
tag<location/>
, jadi kami harus membuat<secionGroup />
dan menempatkan bagian yang tidak diinginkan ke dalam grup itu. Grup bagian kemudian dapat dimasukkan ke dalam tag lokasi.Jadi kita harus mengubah ini:
Ke:
sumber
myNotInheritedSections
menjadief6Private
danunwantedSection
adalahentityFramework
bagian.<configSections> <sectionGroup name="ef6Private"> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> </sectionGroup> </configSections> <location path="." inheritInChildApplications="false"> <ef6Private> <entityFramework /> </ef6Private> </location>
Kami mendapatkan kesalahan terkait hal ini setelah rilis kode baru-baru ini ke salah satu lingkungan pengembangan kami. Kami memiliki aplikasi yang merupakan anak dari aplikasi lain. Hubungan ini telah bekerja dengan baik untuk TAHUN hingga kemarin.
Masalahnya:
Kami mendapatkan kesalahan pelacakan tumpukan kuning karena kunci duplikat dimasukkan. Ini karena kedua web.config untuk aplikasi anak dan orang tua memiliki kunci ini. Tapi ini ada selama bertahun-tahun seperti ini tanpa perubahan. Mengapa tiba-tiba ini menjadi masalah sekarang?
Solusinya:
Alasan ini tidak pernah menjadi masalah adalah karena kunci DAN nilai selalu sama. Kemarin kami memperbarui string koneksi SQL kami untuk memasukkan Nama Aplikasi dalam string koneksi. Ini membuat string unik dan tiba-tiba mulai gagal.
Tanpa melakukan penelitian pada alasan yang tepat untuk ini, saya harus mengasumsikan bahwa ketika aplikasi anak mewarisi nilai web.config orang tua, itu mengabaikan pasangan kunci / nilai yang identik.
Kami dapat menyelesaikannya dengan membungkus string koneksi seperti ini
Edit: Saya lupa menyebutkan bahwa saya menambahkan ini di PARENTS web.config. Saya tidak perlu mengubah web.config anak.
Terima kasih atas bantuan semua orang dalam hal ini, menyelamatkan puntung kami.
sumber
Jika (seperti yang saya mengerti) Anda mencoba untuk sepenuhnya memblokir warisan di konfigurasi web aplikasi anak Anda, saya sarankan Anda untuk menghindari menggunakan tag di web.config. Alih-alih buat apppool baru dan edit file applicationHost.config (terletak di% WINDIR% \ System32 \ inetsrv \ Config dan% WINDIR% \ SysWOW64 \ inetsrv \ config). Anda hanya perlu menemukan entri untuk apppool Anda dan menambahkan atribut
enableConfigurationOverride="false"
seperti pada contoh berikut:Ini akan menghindari warisan konfigurasi dalam aplikasi yang dilayani oleh MyAppPool.
Matteo
sumber
/preview
orang dapat menguji versi baru sebelum membuatnya hidup. Semua orang selalu menyarankan<location>
untuk memperbaiki masalah ini jadi saya sangat senang membaca posting Anda. Namun itu mengeluhThe entry 'default' has already been added.
untuk entri konfigurasi AppFabric terkait bahkan ketika saya menggunakanenableConfigurationOverride="false"
enableConfigurationOverride="false"
aplikasi root saya itu benar-benar membunuh aplikasi root dan itu bahkan tidak akan berfungsi :-(Ini adalah halaman microsoft pada
location
tag: http://msdn.microsoft.com/en-us/library/b6x6shw7%28v=vs.100%29.aspxMungkin bermanfaat bagi beberapa orang.
sumber
Kami mendapatkan kesalahan tentang arahan konfigurasi rangkap di salah satu aplikasi kami. Setelah diselidiki sepertinya karena masalah ini .
Singkatnya, situs web root kami adalah ASP.NET 3.5 (yang 2.0 dengan perpustakaan tertentu ditambahkan), dan kami memiliki sub aplikasi yaitu ASP.NET 4.0.
pewarisan web.config menyebabkan sub-aplikasi ASP.NET 4.0 mewarisi file web.config dari aplikasi induk ASP.NET 3.5.
Namun, web.config global (atau "root") aplikasi ASP.NET 4.0, yang berada di C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config \ web.config dan C: \ Windows \ Microsoft. NET \ Framework64 \ v4.0.30319 \ Config \ web.config (tergantung pada bitness Anda), sudah berisi bagian konfigurasi ini.
Aplikasi ASP.NET 4.0 kemudian mencoba untuk menggabungkan bersama ASP.NET 4.0 web.config root, dan web.config induk (yang untuk aplikasi ASP.NET 3.5), dan berjalan ke duplikat dalam node.
Satu-satunya solusi yang saya dapat temukan adalah dengan menghapus bagian konfigurasi dari web.config induk, dan kemudian baik
sumber