asp.net yet - 超过最大请求长度。





another weibo (13)


请检查此代码demurrer以解决您的问题..复制它,它是一个web.config文件。 。

<system.web>
     <httpRuntime executionTimeout="3600" maxRequestLength="102400" requestLengthDiskThreshold="80" useFullyQualifiedRedirectUrl="false"
     minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100" enableKernelOutputCache="true" enableVersionHeader="true"
     requireRootedSaveAsPath="true" enable="true" shutdownTimeout="90" delayNotificationTimeout="5" waitChangeNotification="0"
     maxWaitChangeNotification="0" enableHeaderChecking="true" sendCacheControlHeader="true" apartmentThreading="false" />
<system.web>

当我尝试在我的网站上传视频时,出现错误的最大请求长度超出了错误。

我该如何解决?




maxRequestLength(长度以KB为单位) 我花了1024(1MB)maxAllowedContentLength(长度以字节为单位)应该与您的maxRequestLength(1048576字节= 1MB)相同。

<system.web>
   <httpRuntime maxRequestLength="1024"
             executionTimeout="3600" />
   <compilation debug="true"/>
</system.web>

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



如果您使用IIS来托管您的应用程序,那么默认的上传文件大小为4MB。 要增加它,请在web.config中使用以下部分 -

<configuration>
    <system.web>
        <httpRuntime maxRequestLength="1048576" />
    </system.web>
</configuration>

对于IIS7及以上版本,您还需要添加以下几行:

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

注意

  • maxRequestLength千字节度量
  • maxAllowedContentLength字节度量

这就是在这个配置示例中值不同的原因。 (两者相当于1 GB)




如果您有请求转到网站中的应用程序,请确保您在根web.config中设置maxRequestLength。 应用程序的web.config中的maxRequestLength似乎被忽略。




我被web.config文件中有多个system.web部分的事实绊住了:它在配置级别的system.web节中添加<httpRuntime maxRequestLength =“1048576”/>时起作用。




总结所有答案在一个地方:

<system.web>
  <httpRuntime targetFramework="4.5.2" maxRequestLength="1048576"/>
</system.web>

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

规则:

  • maxRequestLength(以kb表示)值必须匹配maxAllowedContentLength(以字节表示)。
  • 大多数情况下,您的system.web部分可能已经包含“httpRuntime”。 将您的targetFramework设置为您使用的.net版本。

笔记:

  • maxRequestLength的默认值是4096(4mb)。 最大值是2,147,483,647
  • maxAllowedContentLength的默认值是30,000,000(大约30mb)。 最大值是4,294,967,295

更多信息MSDN




我可以添加到配置网络未编译

<system.web> 
  <httpRuntime maxRequestLength="1024" executionTimeout="3600" /> 
  <compilation debug="true"/> 
</system.web> 
<security> 
  <requestFiltering> 
    <requestLimits maxAllowedContentLength="1048576"/> 
  </requestFiltering> 
</security>



值得注意的是,您可能希望将此更改限制为您希望用于上传的网址,而不是整个网站。

<location path="Documents/Upload">
  <system.web>
    <!-- 50MB in kilobytes, default is 4096 or 4MB-->
    <httpRuntime maxRequestLength="51200" />
  </system.web>
  <system.webServer>
    <security>
      <requestFiltering>
        <!-- 50MB in bytes, default is 30000000 or approx. 28.6102 Mb-->
        <requestLimits maxAllowedContentLength="52428800" /> 
      </requestFiltering>
    </security>
  </system.webServer>
</location>



并且为了防止有人在寻找一种方法来处理这个异常并向用户显示有意义的解释(例如“您上传的文件过大”):

//Global.asax
private void Application_Error(object sender, EventArgs e)
{
    var ex = Server.GetLastError();
    var httpException = ex as HttpException ?? ex.InnerException as HttpException;
    if(httpException == null) return;

    if(httpException.WebEventCode == WebEventCodes.RuntimeErrorPostTooLarge)
    {
        //handle the error
        Response.Write("Too big a file, dude"); //for example
    }
}

(需要ASP.NET 4或更高版本)







web.config中有一个元素用于配置上传文件的最大大小:

<httpRuntime 
    maxRequestLength="1048576"
  />



如果您无法更新配置文件但完全控制处理上载文件的代码,则使用HttpContext.Current.Request.GetBufferlessInputStream(true)

disableMaxRequestLength参数的true值告诉框架忽略配置的请求限制。

有关详细说明,请访问https://msdn.microsoft.com/en-us/library/hh195568(v=vs.110).aspx




注意: here有一些IE9的文档可能有助于理解。 感谢@Ben Amada分享它。

经过近一周的疯狂日复一日,我发现了它。

IE9的问题与iframe中的javascript代码无关。 甚至没有使用javascript或任何库添加的iframe中的javascript(我有很多js库和插件可能会搞砸IE9)。

问题是当您通过DOM移动iframe或一个祖先时。 IE9将会在iframe中加载的页面中执行多次移动。 每次(但最后一个)将具有Object,String,Array和其他未定义的(以及其他错误)。

例:

var iframe = $("<iframe>").attr("src", "www.example.com").attr("id", "myIframe");
iframe.appendTo("body");
$("#myIframe").appendTo("form:eq(0)");

“www.example.com”中的javascript代码将执行一次上述错误,然后执行一次,没有错误。

使用以下代码,代码将只执行一次并且正确:

var iframe = $("<iframe>").attr("src", "www.example.com").attr("id", "myIframe");
iframe.appendTo("form:eq(0)");

我希望这可以帮助别人避免这种痛苦,

迭戈





asp.net iis file-upload