IIS中虛擬目錄設置不繼承主站點web.config的方法


ASP.NET提供了強大的Web.config來配置網站,一般來說一個網站只有一個根目錄下的Web.config文件,有時候我們希望子目錄有着不同的權限或者參數設置,則可以在相應子目錄增加一個Web.config配置文件,加入我們新的配置參數。這裏需要注意的是,子目錄web.config是繼承父目錄的所有設置的,因此,如果子目錄放的是一個和父目錄裏不一樣的網站,就不能共享父目錄的配置了,否則很可能會衝突。

如果子目錄使用獨立Web.config,那如何避免與主目錄的配置衝突呢?

#方法一:在主目錄中使用location標籤;

即通過修改根目錄的Web.config消除繼承關係,在根目錄Web.config文件的system.web或者一切不想讓子目錄繼承的配置節點外面添加一層location如下:

<configuration>
  <location path="." inheritInChildApplications="false">
    <system.web>

    </system.web>
  </location>
</configuration>

inheritInChildApplications ,即是否允許子目錄繼承,默認爲true,我們修改爲false就可以避免繼承了。這種方法的優點是很簡單,但是不夠靈活。

#方法二:在子目錄中使用clear或remove屏蔽不需要配置;

不用修改根目錄的Web.config文件,而是修改子目錄的Web.config。假設根目錄的Web.config設置了一個名爲pscp的連接字符串,要在子目錄使用另一個名字爲pscp的連接字符串,就需要先清除已有的連接字符串(根目錄繼承下來的connectionString設置);
清除所有的配置,可以用clear語法,清除指定名稱的配置,可以用remove語法,如下

<configuration>
	<configSections>
		<remove name="casClientConfig"/>
  	</configSections>
	<connectionStrings>
  		<clear/>
  		<add name="pscp" connectionString="xxx"/>
	</connectionStrings>
  	<system.webServer>
    	<staticContent>
      		<remove fileExtension=".properties" />
      		<mimeMap fileExtension=".properties" mimeType="text/x-java-properties" />
    	</staticContent>
  	</system.webServer>
</configuration>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章