ASP.net HTTP 404-未找到文件而不是MaxRequestLength异常
我的网页上有一个文件上传控件。最大请求长度设置为8 MB(ASP.net HTTP 404-未找到文件而不是MaxRequestLength异常,asp.net,http-status-code-404,iis-6,Asp.net,Http Status Code 404,Iis 6,我的网页上有一个文件上传控件。最大请求长度设置为8 MB(maxRequestLength=8192)。我还有一个服务器验证,如果文件超过4MB,它会抛出一个错误。它在配置中的8MB的原因是为用户提供的杠杆作用,也是为了测试应用程序 如果我上传一个9MB的文件,我会被抛出一个异常,超过了最大请求长度。这很好,并且工作正常。但是当我试图上传一个1GB的文件时,它显示了一个HTTP 404文件,但没有找到。有人能解释一下为什么会发生这种情况,以及如何让它抛出maxRequestLength异常 我正
maxRequestLength=8192
)。我还有一个服务器验证,如果文件超过4MB,它会抛出一个错误。它在配置中的8MB的原因是为用户提供的杠杆作用,也是为了测试应用程序
如果我上传一个9MB的文件,我会被抛出一个异常,超过了最大请求长度。这很好,并且工作正常。但是当我试图上传一个1GB的文件时,它显示了一个HTTP 404文件,但没有找到。有人能解释一下为什么会发生这种情况,以及如何让它抛出maxRequestLength异常
我正在使用IIS6。据我所知,没有办法优雅地处理超过IIS的“maxRequestLength”设置的问题。它甚至不能显示自定义错误页面(因为没有相应的HTTP代码来响应)。解决此问题的唯一方法是将maxRequestLength设置为高得离谱的KB数,例如51200(50MB),然后在上传文件后检查ContentLength(假设请求在90秒之前没有超时)。在这一点上,我可以验证文件是否据我所知,没有办法优雅地处理超过IIS的“maxRequestLength”设置的内容。它甚至不能显示自定义错误页面(因为没有相应的HTTP代码来响应)。解决此问题的唯一方法是将maxRequestLength设置为高得离谱的KB数,例如51200(50MB),然后在上传文件后检查ContentLength(假设请求在90秒之前没有超时)。此时,我可以验证文件是否可以在IIS本身中配置默认错误页。可以在IIS本身中配置默认错误页。1GB上载的问题与浏览器更相关。我在这方面遇到了很多麻烦,尝试了很多解决方案,但这里真正要问的问题是,对于您的业务需求,在现实世界中发生这种情况的可能性有多大,也许应该将其作为已知问题记录在业务规则或非功能性需求文档中。1GB上传的问题更多与浏览器相关。我在这方面遇到了很多麻烦,尝试了很多解决方案,但这里真正要问的问题是,对于您的业务需求,在现实世界中发生这种情况的可能性有多大,也许应该将其记录为业务规则或非功能性需求文档中的已知问题。我今天遇到了这种情况(使用IIS 7上载大文件时使用HTTP 404),但我认为我已进行了所有正确的配置设置。我希望上载高达300MB的文件,因此在应用程序的子文件夹中进行了以下web.config设置:
<configuration>
<system.web>
<httpRuntime maxRequestLength="307200" />
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="314572800" />
</requestFiltering>
</security>
</system.webServer>
</configuration>
此配置在测试中起作用,但当我将更新的文件(包括web.config)复制到生产服务器时,我在上载90MB文件时收到HTTP 404错误。应用程序范围内限制为30MB的较小文件工作正常,因此我知道这是某种请求大小问题
我认为IIS有可能缓存了一些应用程序设置,只是没有更新它们,因此我回收了应用程序池,之后一切正常。我今天遇到了这种情况(使用IIS 7上传大文件时使用HTTP 404)但是我认为我已经做了所有正确的配置设置。我想上传高达300MB的文件,所以我在应用程序的子文件夹中做了以下web.config设置:
<configuration>
<system.web>
<httpRuntime maxRequestLength="307200" />
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="314572800" />
</requestFiltering>
</security>
</system.webServer>
</configuration>
此配置在测试中起作用,但当我将更新的文件(包括web.config)复制到生产服务器时,我在上载90MB文件时收到HTTP 404错误。应用程序范围内限制为30MB的较小文件工作正常,因此我知道这是某种请求大小问题
我认为IIS有可能缓存了一些应用程序设置,只是没有更新它们,因此我回收了应用程序池,然后一切都按预期运行。这是一个有点旧的线程,但我想我应该添加我的经验 我在上传大文件和web api时也遇到了同样的问题。404.13在它到达控制器之前就被抛出了,所以我必须找到切入点并处理这个问题 我的解决方案是使用以下web.config条目: 我通过将404.13重定向到mvc控制器(也可以是webforms页面)来处理404.13,经常出现的404错误击中了我的404路径。404.13的responseMode=“redirect”是至关重要的
<httpErrors errorMode="Custom">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" subStatusCode="13" path="/errors/filesize" responseMode="Redirect" />
<error statusCode="404" path="/errors/notfound" responseMode="ExecuteURL" />
</httpErrors>
同样,这可能是一个常规的webforms页面。这是一个有点陈旧的主题,但我认为我应该添加我的经验 我在上传大文件和web api时也遇到了同样的问题。404.13在它到达控制器之前就被抛出了,所以我必须找到切入点并处理这个问题 我的解决方案是使用以下web.config条目: 我通过将404.13重定向到mvc控制器(也可以是webforms页面)来处理404.13,经常出现的404错误击中了我的404路径。404.13的responseMode=“redirect”是至关重要的
<httpErrors errorMode="Custom">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" subStatusCode="13" path="/errors/filesize" responseMode="Redirect" />
<error statusCode="404" path="/errors/notfound" responseMode="ExecuteURL" />
</httpErrors>
同样,这可能是一个常规的webforms页面。我刚刚遇到了同样的问题,我做了类似的操作,如伪编码器的回答,但有不同的(我想可能不是缓存):
<system.web>
<httpRuntime maxRequestLength="1073741824" executionTimeout="3600" />
</system.web>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
就像这样,试试看。我刚刚遇到了同样的问题,我做了类似的操作,比如伪编码器的