防止 IIS 将设置应用于子目录

防止 IIS 将设置应用于子目录

我有一个网站需要使用默认文档适用于应用程序根目录,但不能适用于子目录。我正在使用“目录浏览”功能,但我只希望它适用于子目录。

下面是我的 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”元素,但将其注释掉作为我最初尝试的占位符。

相关内容