.net项目中有时用户提出要上传大图片,一张图片有可能十几兆,本来用的第三方的上传控件,有限制图片上传大小的设置,以前设置的是2M。按照用户的要求,以为直接将限制图片上传大小的设置改下就可以了,但是当上传大图片的时,总是异常: 错误消息:超过了最大请求长度。
解决方案:
错误原因:asp.net默认最大上传文件大小为4M,运行超时时间为90S。
修改web.config中配置
<configuration>
<system.web>
<httpRuntime useFullyQualifiedRedirectUrl="true" executionTimeout="120" maxRequestLength="2097151"/>
</system.web>
</configuration>
在我的项目中这个修改,之后再上传就没问题了。
简单解释下:
executionTimeout执行超时时间:单位是秒
maxRequestLength上传的最大长度:上面我设置的已经是最大的数值了 单位为KB
下面是httpRuntime完整配置 以及相关的解释
<httpRuntime executionTimeout="600" maxRequestLength="951200"
useFullyQualifiedRedirectUrl="true" minFreeThreads="8"
minLocalRequestFreeThreads="4" appRequestQueueLimit="100"
enableVersionHeader="true"/>
httpRuntime是配置asp.net http运行设置,以确定如何处理对asp.net应用程序的请求。
executionTimeout:表示允许执行请求的最大时间限制,单位是秒
maxRequestLength:指示asp.net支持的最大文件上载大小。该显示可用于防止因用户将大量文件传递到该服务器而导致的拒绝服务攻击。指定的大小是KB为单位。默认值为4096KB.
userFullyQualifiedRedirectUrl:表示指示客户端重定向是否是完全限定的(采用:“http://server/path”格式,这是某些移动控件所必须的),或者指示是否代之以将相对重定向发送到客户端。如果为true,则所有不是完全限定的重定向都将自动转换为完全限定的格式。false 是默认选项。
minFreeThreads:表示指定允许执行新请求的*线程的最小数目。ASP.NET为要求附加线程来完成其处理请求而指定数目的线程保持*状态。默认值为8.
minLocalRequestFreeThreads:表示ASP.NET保持的允许执行新本地请求的*线程的最小数目。该线程数目是为了本地主机传入的请求而保留的,以防某些请求在其处理期间发出对本地主机的子请求。这避免了可能因递归重新进入web服务器而导致的死锁。
enableVersionHeader:表示指定的ASP.NET是否应输出版本的标头。
本文摘自:木庄网络博客>>.net项目中上传大图片失败