我们以为的文件大小限制

我们大家都知道ASP.NET为我们提供了文件上传服务器控件FileUpload,默认情况下可上传的最大文件为4M,如果要改变可上传文件大小限制,那么我们可以在web.config中的httpRuntime元素中添加maxRequestLength属性设置大小,同时为了支持大文件上传超时可以添加executionTimeout属性设置超时时间。网上有很多这样的例子,但实际情况是否是这样吗?

<httpRuntime maxRequestLength="" executionTimeout=""/>

测试环境

IIS 7.5、.NET 3.5 sp1

测试页面UploadFile.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="UploadFile.aspx.cs" Inherits="UploadFile" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><title></title></head><body><form id="form1" runat="server"><div><asp:FileUpload ID="FileUpload1" runat="server" /><asp:Button ID="Button1" runat="server" Text="Button" /></div></form></body></html>

测试页面UploadFile.aspx.cs

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;public partial class UploadFile : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){if (FileUpload1.FileContent != null){FileUpload1.SaveAs(Server.MapPath("/Files/"+FileUpload1.FileName));}}}

实际测试

  1. 上传小于4M的文件

选择2.7M的pdf文件上传

上传提示成功

2. 上传大于4M的文件

选择上传4.3M的pdf文件

上传后报黄页

3. 修改web.config文件,设置可上传文件大小限制

修改web.config,增大可上传文件的大小限制,增大执行时间限制

<httpRuntime maxRequestLength="2048000" executionTimeout="600"/>

重新选择刚才4.3M的pdf文件,重新上传

上传成功

4. 上传大于30M的的文件

碰到这个问题的实际环境是我们使用了第三方的上传文件组件,通过js调用第三方的ActiveX控件上传文件,修改web.config后上传大于30M的文件的时候,报了

如下错误

查看windows系统日志,可以看到如下的日志错误,看到异常信息,我们可以猜测到是请求超长,但是我们设置了最大请求长度了啊,而且远远要大于30M。静

下来想一想可能是IIS限制的,查询相关的IIS资料,发现果然是这样。

异常消息: 超过了最大请求长度。在 System.Web.HttpRequest.GetEntireRawContent()在 System.Web.HttpRequest.GetMultipartContent()在 System.Web.HttpRequest.FillInFormCollection()在 System.Web.HttpRequest.EnsureForm()在 System.Web.HttpRequest.get_HasForm()在 System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull)在 System.Web.UI.Page.DeterminePostBackMode()在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

5. 修改IIS的配置

选中自己的站点,并双击“请求筛选”

选择右侧的”编辑功能限制”

在弹出的页面中,我们看到默认请求限制正是30M

修改请求大小限制为合适的值即可,保存后重启站点即可。

                                         

总结

1. Asp.NET作为微软的Web服务框架,其定义了web请求的大小限制和执行时间限制。同时其为上传文件提供了基础的框架,并为我们提供了UploadFile服务器控

件,其最终也是通过Http将文件数据传输到服务器端,自然也受请求大小和执行时间的限制,只是一般的请求都打不到这个极限,往往是上传文件的时候才会触及

这个阀值。

2. IIS作为windows平台上承载ASP.NET的法定服务器,按照正常逻辑来说,其也能统一设置发送到自己这里请求的大小限制。同时由于IIS只将针对特定类型的文

件的请求路由到ASP.NET进行处理,像js、css和图片等请求是不受ASP.NET中请求大小的限制的,这也从一个侧面说明有必要再IIS中添加控制。

3. 请求的长度校验只有先通过IIS的限制后,才有可能路由到ASP.NET,只有最终通过ASP.NET的长度限制校验,才能正常的进行后续的管道处理步骤。

转载于:https://www.cnblogs.com/wufengtinghai/p/3830695.html

你以为的ASP.NET文件上传大小限制是你以为的吗相关推荐

  1. ASP.NET文件上传大小的限制解决方案

    ASP.NET文件上传大小的限制解决方案 参考文章: (1)ASP.NET文件上传大小的限制解决方案 (2)https://www.cnblogs.com/hgmyz/p/6068156.html 备 ...

  2. Asp.net 文件上传的 FileUpload FileName 和 FileUpload PostedFile.FileName的细节问题

    Asp.net 文件上传的 FileUpload FileName 和 FileUpload PostedFile.FileName的细节问题 ASP.NET 文件上传估计大家都用得很熟悉,常用控件 ...

  3. java 文件上传 大小_java 上传文件大小转换为 GB/MB/KB/B

    1.工具类 package cn.cmodes.common.utils; import java.io.File; import java.io.FileInputStream; import ja ...

  4. springboot设置文件上传大小(tomcat默认1M)

    application.yml # 设置文件上传大小(tomcat默认1M) server:tomcat:max-http-form-post-size: -1 spring:servlet:mult ...

  5. struts2文件上传大小限制问题小结(引用)

    最后解决办法: 页面js控制上传文件的大小,在页面进行控制.如下代码 inputs是所有文本上传input DOM //名称信息var nameStr='';//大小信息var sizeStr=''; ...

  6. IIS 6和IIS 7 中设置文件上传大小限制设置方法,两者是不一样的

    在IIS 6.0中设置文件上传大小的方法,只要设置httpRuntime就可以了 <system.web><httpRuntime executionTimeout="36 ...

  7. 文件上传下载-修改文件上传大小

    #上传时出现如下异常: 上传文件的大小超出默认配置 默认10M nested exception is java.lang.IllegalStateException: org.apache.tomc ...

  8. linux+nginx+mysql+php系统修改文件上传大小限制

    linux+nginx+mysql+php系统修改文件上传大小限制 对于LNMP框架的一些网站,上传文件大小会受到多个方面的限制,一个是nginx本身的限制,限制了客户端上传文件的大小,会报错&quo ...

  9. springboot 上传图片大小_springboot 文件上传大小配置的方法

    springboot上传文件大小的配置我这里记录两种,一种是设置在配置文件里只有两行代码,一种是加个Bean 首先第一种: application.properties中添加 spring.http. ...

最新文章

  1. .NET Core 常用加密和Hash工具NETCore.Encrypt
  2. 业界丨一文看懂AI人才百万美元年薪因何而来?
  3. 翻身的废鱼——论PHP从入门到放弃需要多久?15
  4. c语言 offsetof函数,C 库宏 - offsetof()函数
  5. 基于koa2开发的用户中心
  6. MATLAB机器学习系列-3:BP神经网络算例实现
  7. 蓝桥杯 ALGO-71 算法训练 比较字符串
  8. 所有windows的资料
  9. ThinkPHP 3.1.2 模板中的变量
  10. 回溯法求解n个元素的集合的幂集
  11. zend studio php配置,Zend Studio的配置和使用
  12. 华为内部经典项目管理体系
  13. 搞懂 PEM、ANS、PFX、P12、p8、CER、X509 等证书相关文件格式 后缀
  14. HTTP状态码:415
  15. php判断4的倍数,4的倍数特征(4的倍数特征规律怎样找)
  16. ebyte Lora 转 4G 透传通讯测试
  17. Python中随机数种子的作用及使用
  18. Anaconda从C盘移动到D盘
  19. es数据更新时间_京东到家订单中心系统mysql到es的转化之路
  20. 03. isasupperclass

热门文章

  1. CCNP学习笔记(6)
  2. 史上最简单的SpringCloud教程 | 第八篇: 消息总线(Spring Cloud Bus)(Finchley版本)
  3. 2.1 . df 命令和du命令
  4. 外媒:英国索尔兹伯里事件中受伤警察已重返工作
  5. 126篇殿堂级深度学习论文分类整理 从入门到应用 | 干货
  6. 前端工程师的mysql笔记
  7. PHP 开发中的外围资源性能分析(一)
  8. Ubuntu12.04下tomcat的安装与配置
  9. sql server密钥
  10. 澳洲留学征文活动获奖情况公布