1.在根目錄解除子目錄的繼承
1 <configuration> 2 <!--...其他配置...--> 3 <location path="." inheritInChildApplications="false"> 4 <system.web> 5 6 </system.web> 7 </location> 8 <!--...其他配置...--> 9 </configuration>
這裏的inheritInChildApplications就是接觸子目錄webconfig的繼承,將不需要子目錄繼承的節點放在這個節點裏面就ok了
這種方法的優點是很簡單,但是不夠靈活,同時面對較複雜的Web.config配置,仍可能會報錯。比如根目錄和子目錄有着不同的system.webServer配置,按照這個方法在根目錄的system.webServer外面加上了location限制,不幸的是,IIS7下會出現500錯誤。
2.在子目錄對衝突的節點處理
根目錄節點
1 <connectionStrings> 2 <add name="DBConnectionString" connectionString="Data Source=.;Initial Catalog=test;User ID=sa;Password=sa123" providerName="System.Data.SqlClient"/> 3 </connectionStrings>
子目錄節點
1 <connectionStrings>
2 <clear/>
3 <add name="DBConnectionString" connectionString="Data Source=.;Initial Catalog=test;User ID=sa;Password=sa123" providerName="System.Data.SqlClient"/>
4 </connectionStrings>
在衝突的節點前先clear,清除之前的配置,然後再加載下面的配置就可以了,除了clear 還有remove也可以
<connectionStrings>
<remove name="DBConnectionString"/>
<add name="DBConnectionString" connectionString="Data Source=.;Initial Catalog=test;User ID=sa;Password=sa123" providerName="System.Data.SqlClient"/>
</connectionStrings>
這種配置方法可以用在所有的節點上,使用起來也比較靈活,個人推薦用第二種方法。