Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.net HTTP 404-未找到文件而不是MaxRequestLength异常_Asp.net_Http Status Code 404_Iis 6 - Fatal编程技术网

ASP.net HTTP 404-未找到文件而不是MaxRequestLength异常

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异常 我正

我的网页上有一个文件上传控件。最大请求长度设置为8 MB(
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页面。

我刚刚遇到了同样的问题,我做了类似的操作,如伪编码器的回答,但有不同的(我想可能不是缓存):

  • 编辑Web.config-->maxRequestLength

    <system.web>
    <httpRuntime maxRequestLength="1073741824" executionTimeout="3600" />
    </system.web>
    
    
    
  • 编辑以下内容:

    <security>
          <requestFiltering>
            <requestLimits maxAllowedContentLength="1073741824" />
          </requestFiltering>
    </security>
    
    
    

  • 就像这样,试试看。

    我刚刚遇到了同样的问题,我做了类似的操作,比如伪编码器的