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>