虛擬目錄webconfig的配置

    昨天須要新建一個虛擬目錄放在之前的一個站點下,新建了應用池,配好了環境置頂路徑,虛擬目錄頁創建成功 ,可是程序一直是報錯。這個程序我在測試服務器上是測過的,新建了一個站點是能夠正常訪問的,排除了程序問題。web

一直是報500,在webconfig配置拋出錯誤的 customErrors節點也不起做用,後來把程序所有刪掉放了一個靜態頁,是能夠訪問成功的,說明虛擬目錄的配置也是沒問題的,毫無頭緒,在網上查了很久各類配置都試過了仍是不行,今天無心中看見了一個帖子給我靈感,而後試了一下果真成功了服務器

    虛擬目錄的webconfig是繼承了根目錄的webconfig的全部配置的,因此若是有節點名稱是同樣的話就會有衝突報錯。這時候極可能會出 http 500的錯誤ide

 

 

  這個時候有兩種方法能夠解決測試

1.在根目錄解除子目錄的繼承spa

1 <configuration>
2   <!--...其餘配置...-->
3   <location path="." inheritInChildApplications="false">
4     <system.web>
5 
6     </system.web>
7   </location>
8   <!--...其餘配置...-->
9 </configuration>

這裏的inheritInChildApplications就是接觸子目錄webconfig的繼承,將不須要子目錄繼承的節點放在這個節點裏面就ok了.net

這種方法的優勢是很簡單,可是不夠靈活,同時面對較複雜的Web.config配置,仍可能會報錯。好比根目錄和子目錄有着不一樣的system.webServer配置,按照這個方法在根目錄的system.webServer外面加上了location限制,不幸的是,IIS7下會出現500錯誤。code

2.在子目錄對衝突的節點處理blog

根目錄節點繼承

1 <connectionStrings>
2     <add name="DBConnectionString" connectionString="Data Source=.;Initial Catalog=test;User ID=sa;Password=sa123" providerName="System.Data.SqlClient"/>
3   </connectionStrings>

子目錄節點rem

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>

這種配置方法能夠用在全部的節點上,使用起來也比較靈活,我的推薦用第二種方法。

 

參考來自 http://blog.csdn.net/papalian/article/details/7204248  就是我看的那篇帖子,介紹的更爲詳細一些

最後說一下,昨天從下午三點到晚上十點,今天上午又弄了一個小時。但願你們能夠用得上,之後出現一樣的問題直接就能夠用了,你們也要多分享

相關文章
相關標籤/搜索