网际飞扬

还记得年少时的梦么,醒不过来 便信以为真……

主题背景
本网站首发版本创建于1999年4月
网际飞扬
手机网站二维码

请使用手机扫描二维码,登录网站手机版。

关于IIS上传限制的快速解决办法

  • 2023-06-08
  • 2144
  • 飞驰的心

网上文章一大抄,有的是装模做样的图文并茂,有的是恨不得从石器时代开始给你讲起,绕来绕去不说正题,下面我把这个问题写个说明,方便各位新手备查:

1、IIS7以后修改上传文件大小只需要修改站点下的web.config文件即可,不需要你去windows\system32\inetsrv下折腾那该死的iis配置文件。

2、IIS界面中也能配置上传文件大小,配置最终都会保存在web.config里,所以为了移植方便、为了配置方便,所以建议你直接修改web.config。

以上就是逻辑,以下是方法——

打开web.config

1、找到system.web下的httpRuntime节点,加入maxRequestLength属性(请注意:这个属性数值以Kb为单位):

《httpruntime maxrequestlength="1048576" executionTimeout="3600"》
  

2、找到system.webServer下的security下的requestFiltering节点,加入requestLimits节点,如下(请注意:这个节点的数值以字节为单位):

 
《system.webserver>
    《security>
      《requestfiltering>
        《requestlimits maxallowedcontentlength="1073741824">
      《/requestlimits>
    
 》

按我上面的数值配置好以后,IIS当前站点就支持1Gb的上传附件了,如果需要更大或更小,自己手动调节数值即可,记住一个是Kb一个是字节,一定要注意换算。和IIS上传限制有关的问题,这是唯一且最终的解决办法,如果你还是上传有问题,那就是你web程序本身(.Net、MVC、PHP)可能有某种限制。

归纳起来一共有三个重要的设置点:
1、maxrequestlength="1048576" 以Kb为单位 设置当次请求的数据包大小,1048576Kb即1Gb

2、maxallowedcontentlength="1073741824" 以字节为单位,设置允许请求的内容大小,1073741824换算完即1Gb

坦白地说他两个有什么区别我也不清楚,但必须配套设置才能起作用,第三个设置点其实是个坑——

3、executionTimeout="3600" 超时时间,我设置的值是3600秒,也就是1小时。

之所以说超时时间设置是个坑,原因有2:其一是很多人不设置这个属性,那么IIS就执行默认设置,默认超时大约是20分钟,但特别强调的是这个20分钟还是个"弹性"时间,如果此时服务器内存占用较高,IIS的回收机制启动,它会随时掀翻这个20分钟超时的桌子。所以这个20分钟超时是完全不可信的,这就解释了很多人网站的session可能几分钟就失效,因为iis回收就相当于重启了应用程序池,一切内存中的数据都灰飞烟灭。

当你手动设置了executionTimeout属性后,IIS的自动回收机制才会收敛,至少它不会在你超时限定的时间内回收,这样也就保障了你上传时候的这条链路的畅通。用户大多数都是家用宽带,上行很小,假设上行一个1Gb的电影,还没上传完iis就回收了,不失败才怪。

众爱卿,道理有没有彻底明白? 跪安吧!


本博客所有内容均为原创,原则上我不希望你转载。如特别喜欢而转载的话,请务必注明出处“网际飞扬 http://www.fayo.net” 否则本人闲来无事可能会把你误当成维权的靶子。

评论

验证码

全部评论

共{{commentCount}}条
  • {{i+1}}楼
    {{rs.Msg_Sender}}{{rs.Msg_Datetime}}

    {{rs.Msg_Content}}

播放器封面
  • 宠物精灵