IIS 8.5中默认文档未尝试所有文件。

5

我有一个网站,在IIS 8.5 Windows 2012 R2上使用默认设置的默认文档。

<system.webServer>
  <defaultDocument enabled="true">
    <files>
      <add value="Default.aspx" />
      <add value="Default.htm" />
      <add value="Default.asp" />
      <add value="index.htm" />
      <add value="index.html" />
      <add value="iisstart.htm" />
    </files>
  </defaultDocument>
</system.webServer>

当我浏览到没有文件名的URL(mysite.com/Content/)时,IIS只会尝试default.aspx而不是列表中的其他文件(index.html)。IIS试图加载default.aspx,但我得到了404错误。奇怪的是,在该目录中没有default.aspx文件,但index.html确实存在。如果我直接浏览到index.html,页面就会正确显示。根据Microsoft文档中的默认文档,它应该尝试列表中的下一个文件,直到找到存在的文件。
我明确地向子目录添加了一个web.config文件。
<defaultDocument enabled="true">
  <files>
      <clear />
       <add value="index.html" />
   </files>
 </defaultDocument>

而且IIS仍然试图使用default.aspx。有人遇到过这种情况吗?您对为什么按照文档的说明无法工作有什么建议吗?


你重置设置后尝试过重置IIS吗? - Amnesh Goel
2
你有设置任何路由吗? - Ewan
1
是否安装了任何特殊的模块/处理程序? - haim770
可能是权限问题?允许/禁止扩展名问题?ASP.NET 覆盖了您的设置? - Ondrej Tucny
是的 - 已进行了IIS重置。没有设置路由 - 安装了一个旧的URL重写模块,其中只有一个规则(无关联)。 - Allan
显示剩余4条评论
4个回答

3
  1. 尝试删除/禁用旧的URL重写模块?(暂时)
  2. 如果需要身份验证,请确保登录页面存在。

(其他建议从上面复制,我已包含在内,以防其他人阅读此问题)

  1. 检查源代码中的任何路由。
  2. 检查任何特殊模块或处理程序,可能会导致重定向或拦截调用。

如果您想将index.html作为默认页面,您需要单击IIS网站并单击默认文档,将index.html添加为您的默认文档。 - Rohit Khurana

0
一个使默认文档指令生效的方法是: 进入IIS / 应用程序池 将“托管管道模式”更改为经典模式,而不是集成模式。 这对我有用。

-1
如果您禁用了默认文档但启用了目录浏览,则当浏览器从根目录发出请求时,IIS会返回一个目录列表。如果您同时禁用了默认文档和目录浏览,则IIS会向浏览器发送“HTTP 404文件不存在”错误。
因此,请在IIS中启用默认文档选项并重置IIS。

-1
如果您想将index.html作为默认页面,您需要点击IIS默认网站,然后单击默认文档。现在,您可以将index添加为默认页面。

正如您可以从我在原问题中发布的配置示例中看到的那样,<defaultDocument enabled="true">和<add value="index.html" />。 - Allan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接