IIS中虛擬目錄設定不繼承主站點web.config的方法
阿新 • • 發佈:2020-07-29
目錄
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>