HTTP错误404.7 - 未找到 请求筛选模块被配置为拒绝该文件扩展名。

24

我正在尝试配置IIS 7.5网站的默认网页。

请求筛选已打开。但是,允许.aspx页面,我已将default.aspx设置为网站的默认页面。

如果我浏览到localhost/default.aspx,我会得到一个预期的网页。

如果我浏览到localhost/,我会得到

HTTP错误404.7-未找到 请求筛选模块被配置为拒绝该文件扩展名。

有任何想法吗?

5个回答

35

看起来请求过滤实际上是在筛选空文件名,因此您必须将其添加到web.config中的请求过滤块中:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <security>
      <requestFiltering>
        <fileExtensions allowUnlisted="true">
          <remove fileExtension="." />
          <add fileExtension="." allowed="true" />
        </fileExtensions>
      </requestFiltering>
    </security>
  </system.webServer>
</configuration>

现在看来很明显,但我认为这是一个巨大的陷阱。


更多信息:IIS 7无法提供文件 - 404.7错误


1
这解决了我的问题。尽管如此,它非常具有误导性,因为当我使用本地主机时出现了这个错误,但是当我使用主机名时,我得到了一个404未找到的错误 - 与实际的(404.7)错误略有不同 :-) - santos
1
谢谢,我也遇到了同样的问题。然而,我没有注意到这些行 <remove fileExtension="." /> 和 <add fileExtension="." allowed="true" /> 的目的是什么:在我的情况下,即使没有这些行,一切都运行良好... - Aracthor
这个有安全问题吗? - Dov Miller

3
您可以通过添加以下内容来解决问题:
<requestFiltering>
    <fileExtensions allowUnlisted="true">
        <remove fileExtension="." />
        <add fileExtension="." allowed="true" />
    </fileExtensions>
</requestFiltering>

添加到你的Web.Config文件中


1
您可以通过将文件扩展名添加到IIS的请求过滤模块中来解决此问题。

0
为了允许所需的扩展: 在托管测试服务器的服务器上,启动IIS管理器。
在左侧窗格中,在连接下拉菜单下展开站点,并选择mytestserver网站。
在中间的主页窗格中,选择请求筛选。
在右侧窗格中,在操作下,选择允许文件名扩展。
添加扩展,例如- .mdb。
重新启动IIS管理器。

0
请务必从页面上的按钮中删除任何 PostBackURL="MyPage.aspx"。 我猜当包括 postbackurl 时,IIS 认为它获得的是文件而不是页面。 它默认拒绝 .aspx 文件类型。 您可以在页面错误中看到这一点。

错误示例:会创建一个 404.7 错误(注意 PostBackURL)

<asp:FileUpload runat="server"  ID="uplReplaceFile" ToolTip="Update this file" />

 <asp:Button runat="server" PostBackUrl="MyPage.ascx"  ID="bnHiddenFileUploadListener" OnClick="bnHiddenFileUploadListener_OnClick" />

好的:没有错误

<asp:FileUpload runat="server"  ID="uplReplaceFile" ToolTip="Update this file" />

 <asp:Button runat="server" ID="bnHiddenFileUploadListener" OnClick="bnHiddenFileUploadListener_OnClick" />

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