为什么 IIS 10 默认文档不适用于静态文件?

Why is IIS 10 default document not working for a static file?

我有一个 IIS 10 站点,我可以毫无问题地从根目录下载文档 index.html。但是,当我尝试使用默认文档功能下载同一文件时,我得到状态代码 404.0,看起来 IIS 没有尝试将请求从 / 转换为 /index.html.

我的 web.config 文件:

        <defaultDocument enabled="true">
            <files>
                <clear />
                <add value="index.html" />
            </files>
        </defaultDocument>
        <handlers>
            <add name="Static File" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="File" requireAccess="Script" />
            <add name="DefaultDocument" path="*" verb="*" modules="DefaultDocumentModule" resourceType="File" />
        </handlers>

啊。发现了问题。我的静态文件处理程序具有 resourceType="File",因此仅针对明确命名的文件调用。应该是这样的:

        <handlers>
            <add name="Static File" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Script" />
        </handlers>

这似乎是默认文档工作所必需的。

使用 IISM 的 GUI 是:

  1. 单击左侧“连接”树中的站点。
  2. 双击树右侧面板中的“处理程序映射”。
  3. 双击静态文件处理程序(如果不存在则添加它)。
  4. 点击“请求限制...”
  5. 在“映射”选项卡上,单击“仅当请求映射到时调用处理程序:”,然后单击“文件或文件夹”并确定返回。