使用HTML5 File API的IIS7为大文件返回404

时间:2011-07-13 20:24:41

标签: asp.net-mvc html5 iis-7 http-status-code-404 fileapi

我正在尝试按照此示例实现用于图像上传的文件API

http://robertnyman.com/html5/fileapi-upload/fileapi-upload.html

在服务器端,我使用ASP.NET MVC 3和IIS7(集成,仅32位)

使用Development Server和IIS7.5,本地一切正常。在服务器上它也可以工作,除非文件具有一定的大小(使用2.2MB图像文件),上传似乎正在工作,但响应是404页面。我已经将maxRequestLength配置为10MB,但即使使用默认的4MB也应该有效。

我得到的404页面默认为IIS7,而不是我的应用程序的404页面(通过查看Fiddler或Firebug中的结果)。我正在捕获所有随机URL并显示自定义404页面,但在这种情况下,似乎请求未发送到ASP.NET管道(应用程序池设置为集成)。

我还记录了可​​能发生的任何异常(包括404) - 就此问题而言,日志是明确的。服务器的事件日志中也没有任何内容。

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:8)

它与HTML5 File API或ASP.NET MVC无关。

问题是在IIS7中你必须指定maxAllowedContentLength。公布的默认值为4MB,但由于上传2MB文件失败,因此情况似乎并非如此。有趣的是,本地IIS7.5(Windows 7)似乎没有这个问题 - 可能是在IIS7.5(Windows Server 2008 R2)中修复了

要修复它,请在web.config中确保您有类似的内容:

<system.webServer>
  ...
  <security>
    <requestFiltering>
      <requestLimits maxAllowedContentLength="10485760" />
    </requestFiltering>
  </security>
  ...
</system.webServer>

该值以字节为单位;我指定了10MB