IIS显示页面失败,因为请求实体过大。

53
我在将一个页面重定向到另一个网页时,遇到了以下错误:

“由于请求实体过大,无法显示该页。”

我知道出现这个问题是因为我从要重定向的页面中读取了大量数据。但是我仍在寻找解决方案。同时,当我研究此问题时,发现上传任何大型文件都会导致此类问题。
但我并没有上传任何大型文件,只是页面本身包含了大量数据。希望能尽快得到解决方案。

我和我的用户遇到了同样的问题。没有上传功能,但是他们定期会出现错误。这可能与IIS有关,他们在某个页面停留时间太长,离开电脑,几个小时后回来并单击链接。我无法复制此错误。 - JoshYates1980
@Shilpa,你找到解决方案了吗?如果是的,请与我分享。谢谢。 - kevin
2
@kevin,请尝试将以下语句添加到您的 web.config 文件中的 <system.web> 标签中- <httpRuntime executionTimeout="999999" maxRequestLength="1024000" requestValidationMode="2.0" /> - Shilpa Soni
哦,对我没用。不管怎样,谢谢。 - kevin
7个回答

58

如果您启用了SSL,我认为这将解决问题:

在IIS7.5的applicationHost.config文件中设置uploadReadAheadSize将在两种情况下解决您的问题。您可以直接在applicationhost.config文件中修改此值。

  1. 选择Default Web Site下的网站

  2. 选择Configuration Editor

  3. 在Section下拉菜单中,选择“system.webServer/serverRuntime”

  4. 为“uploadReadAheadSize”输入更高的值,如1048576字节。默认值为49152字节。

在客户端重协商过程中,必须使用SSL预加载请求实体主体。 SSL预加载将使用UploadReadAheadSize元数据库属性的值,该值用于ISAPI扩展。

参考


1
我刚刚确认这是修复方法!在IIS7中使用.NET Webforms进行postback后,如果页面闲置90秒,然后再进行postback,就会出现请求实体过大的错误。希望这能帮助其他人。终于解决了! - JoshYates1980
这是这个吗?<serverRuntime uploadReadAheadSize="524288000"/> - kevin
是的,那将是web.config条目。我通过IIS进行了配置。 - JoshYates1980
这很有帮助,但是提供的链接似乎已经失效了。 :( - dis.iz.peez
现在已经修复了链接。 - Ram

34

我通过以下步骤让它工作:

  1. 进入 IIS。
  2. 点击服务器名称。
  3. 在功能(图标)中选择配置编辑器。
  4. 点击顶部带有设置的下拉菜单。
  5. 遍历路径 system.webServer -> security -> requestFiltering -> maxAllowedContentLength 并将其设置为 334217728。(然后按回车键,再点击右上角的应用按钮)。

您也可以重启 Web 服务器以确保生效。 之后我就可以上传我的 150k 数据库到 phpymyadmin。

我还在 programs/PHP/phpversion/php.ini 中将 post_max_size 设置为 8000。

这可能对于文件大小来说有些过度,但当你有大文件时却能完成工作。


1
在按照您的修复方法进行操作后,错误已经停止了。谢谢。 - Gregory Bologna
1
谢谢,让这个对我起作用。 - Mac135

20

对于我来说,uploadReadAheadSize并没有解决我的问题。

我在我的asp.net web.config中更改了这两个设置,最终文件上传成功:

<system.web>
  <system.webServer
<httpRuntime executionTimeout="999999" maxRequestLength="20000" requestValidationMode="2.0" /> <!-- 20 MB -->
</system.web>

  <system.webServer>
   <security>
      <requestFiltering>
         <requestLimits maxAllowedContentLength="20500000" />  <!-- 20.5 MB - making it match maxRequestLength to fix issue with uploading 20mb file -->
      </requestFiltering>
   </security>   
  </system.webServer>

3
第二个有所帮助。 - Stefan Pintilie
2
第二个方法确实也解决了我的问题。 - usr-bin-drinking

4

可能的另一个原因是身份验证设置。在IIS7中,

  1. 选择Default Web Site下的站点

  2. 选择“身份验证”

  3. 选择Windows身份验证并启用。禁用所有其他选项。

  4. 仍然选择“Windows身份验证”,点击操作面板中的“高级设置”。

  5. 确保扩展保护状态为“接受”,并勾选启用内核模式身份验证


4
我也遇到了同样的错误,上面的解决方法没有起作用。我只是在使用HTTP (localhost)。然而,这个方法解决了413错误。
Set-WebConfigurationProperty -filter /system.webserver/security/requestfiltering/requestLimits -name maxAllowedContentLength -value 134217728

似乎值可能是334217728,如上面提供的此答案中所述。 - S.Serpooshan

2
我已经按照上述方法操作,但仍然无法解决问题。
对我来说有效的解决方法是增加请求限制: - 在IIS管理器中选择站点 - 从右侧菜单中点击“编辑功能设置” - 将“最大允许内容长度”设置为200000000

1
在我的案例中,错误发生在下载文件时。原因是我有一段代码,在(错误的)情况下向客户端显式发送HTTP 413。请注意,设置代码中的HTTP响应代码413(或您正在使用的库中)也可能会生成OP的错误消息。(详情请见此处)。

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