zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C#文件上传默认最大为4M的解决方法

c#文件上传方法 解决 默认 最大
2023-06-13 09:14:07 时间
1,环境:window2003,IIS6.0
要首先要修改IIS6.0中的asp请求的最大字节数,默认时为200K;
方法:打开位于C:\Windows\System32\Inetsrv中的metabase.XML,
并修改AspMaxRequestEntityAllowed为你需要的值(例如"1073741824",1GB);
技术背景:
在IIS6.0中,AspMaxRequestEntityAllowed属性指定了一个ASP请求(Request)可以使用的最大字节数.如果Content-Length头信息中包含的请求长度超过了AspMaxRequestEntityAllowed的值,IIS将返回一个403错误信息.
这个属性值与MaxRequestEntityAllowed相似,但是是针对ASP请求的.假如你知道自己的ASP应用只需要处理很少的请求数据,你可以在WorldWideWebPublishingService(WWW发布服务)层级设定全局的MaxRequestEntityAllowed属性为1MB,并单独设定AspMaxRequestEntityAllowed为一个较小的值.
注意:在编辑文件前请停止IIS服务,否则无法保存修改后的文件.
也可以那么解决:
到微软站点载了IIS6ResourceKitTools(http://www.microsoft.com/downloads/details.aspx?FamilyID=56FC92EE-A71A-4C73-B628-ADE629C89499&displaylang=en),安装后利用MetabaseExplorer修改了(local)\LM\W3SVC\AspMaxRequestEntityAllowed属性(默认为200K=204800),修改为1G就是了;同时修改了AspScriptTimeout属性调整下时限,就可以上传大文件了。
2,.net中
(1)在web.comfig文件中添加一个httpRuntime主键
<httpRuntimeexecutionTimeout="90"maxRequestLength="40960"useFullyQualifiedRedirectUrl="false"
minFreeThreads="8"minLocalRequestFreeThreads="4"appRequestQueueLimit="100"/>
maxRequestLength="40960"是最大的请求数,单位为:K
(2)修改C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\CONFIG\machine.config文件
<httpRuntimeexecutionTimeout="190"maxRequestLength="40960"
maxRequestLength="40960"是最大的请求数,单位为:K
经实验,(1)和(2)只要一个就可以。

配置httpRuntime也可以让FileUpload上传更大的文件,不过设置太大了会因用户将大量文件传递到该服务器而导致的拒绝服务攻击(属性有说明)

<httpRuntime>

<httpRuntimeuseFullyQualifiedRedirectUrl="true|false" maxRequestLength="sizeinkbytes" executionTimeout="seconds" minFreeThreads="numberofthreads" minFreeLocalRequestFreeThreads="numberofthreads" appRequestQueueLimit="numberofrequests" versionHeader="versionstring"/> 属性 属性 选项 说明 appRequestQueueLimit     ASP.NET将为应用程序排队的请求的最大数目。当没有足够的自由线程来处理请求时,将对请求进行排队。当队列超出了该设置中指定的限制时,将通过“503-服务器太忙”错误信息拒绝传入的请求。 executionTimeout     指示在被ASP.NET自动关闭前,允许执行请求的最大秒数。 enable 指定是否在当前的节点及子节点级别启用应用程序域。默认值为true     true 指定启用应用程序域。     false 指定禁用应用程序域。应用程序将不会在内存中加载,任何客户端请求将导致出现错误号为404的错误。 idleTimeOut     指定应用程序域在经过多长的空闲时间后将予以关闭。默认值为20分钟 enableKernelModeCache 指定是否启用输出缓存。目前,该属性只有在安装IIS6.0版或更高版本之后才起相应的作用。输出缓存的配置和请求的类型决定了是否对内容进行缓存。

若要对响应进行缓存,必须满足以下条件:

  • 必须通过页面指令或使用缓存API显式启用缓存。
  • 缓存必须具有过期策略,以便内核知道何时放弃缓存。
  • 缓存不能有任何变量标头或参数。
  • 请求不能要求进行任何身份验证。
  • true 指定启用缓存。 false 指定禁用缓存。 maxRequestLength     指示ASP.NET支持的最大文件上载大小。该限制可用于防止因用户将大量文件传递到该服务器而导致的拒绝服务攻击。指定的大小以KB为单位。默认值为4096KB(4MB)。 minFreeLocalRequestFreeThreads     ASP.NET保持的允许执行新本地请求的自由线程的最小数目。该线程数目是为从本地主机传入的请求而保留的,以防某些请求在其处理期间发出对本地主机的子请求。这避免了可能的因递归重新进入Web服务器而导致的死锁。 minFreeThreads     允许执行新请求的自由线程的最小数目。ASP.NET为要求附加线程来完成其处理的请求使这些线程保持自由状态。 useFullyQualifiedRedirectUrl     指示客户端重定向是否是完全限定的(采用{HYPERLINK"http://server/path"}格式,这是某些移动控件所必需的),或者指示是否代之以将相对重定向发送到客户端。     true 指定客户端重定向需要以完全限定的格式发送。这是通过自动将不是完全限定的格式的所有重定向转换为完全限定的格式来实现的。     false 指定客户端重定向不需要被自动转换为完全限定格式。false是默认选项。 versionHeader     指定ASP.NET随每个响应所发送的版本头的值。MicrosoftVisualStudio.NET使用该属性来确定当前使用的ASP.NET版本。这对产品环境来说不是必需的,并且可以通过从Web.config或Machine.config移除该属性,或将该属性设置为空字符串(versionHeader="")来将其禁用。