1. 程式人生 > 實用技巧 >IIS中虛擬目錄設定不繼承主站點web.config的方法

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>