我有一个网站需要使用默认文档适用于应用程序根目录,但不能适用于子目录。我正在使用“目录浏览”功能,但我只希望它适用于子目录。
下面是我的 web.config 的一个片段:
<system.webServer>
<defaultDocument enabled="true">
<files>
<clear />
<add value="1f200f74-07e5-4681-a275-e9cbc9f1b794.txt" />
</files>
</defaultDocument>
<directoryBrowse enabled="true" />
我尝试申请继承子应用程序到 defaultDocument 元素,但这不起作用,实际上它使应用程序失败。因此,我希望 defaultDocument 仅适用于根目录,并且我希望将 directoryBrowse 应用于所有子目录。
我意识到我可以在每个直接子目录中放置 web.config 文件,并将 clear 应用于 defaultDocument,但我不能将 web.config 文件放在这些目录中(此应用程序的性质不允许这样做)。(此外,allowSubDirConfig在这里不起作用,这只会阻止加工子目录中的 web.config 文件。)
web.config 中是否有配置可以将设置应用于该节点仅有的?
答案1
解决方案是使用 位置标签:
位置标记用于指定特定于路径的配置,作为在映射到该虚拟路径的文件夹中使用 web.config 文件的替代方法。路径的位置标记在配置层次结构的父级中设置,并被视为位于该父级。
请参阅上面链接中的示例。
答案2
根据 harrymc 的回答,我能够使此配置正常工作:
<location path="." inheritInChildApplications="false">
<system.webServer>
<defaultDocument enabled="true">
<files>
<clear />
<add value="1f200f74-07e5-4681-a275-e9cbc9f1b794.txt" />
</files>
</defaultDocument>
</system.webServer>
</location>
<system.webServer>
<!--<defaultDocument enabled="true">
<files>
<clear />
<add value="1f200f74-07e5-4681-a275-e9cbc9f1b794.txt" />
</files>
</defaultDocument>-->
<directoryBrowse enabled="true" />
...
使用继承子应用程序属性地点元素也是必需的。我保留了原来的“defaultDocument”元素,但将其注释掉作为我最初尝试的占位符。