asp.net文件/大文件上传需要配置的项目整理

asp.net程序默认上传文件是有大小限制的,默认是4M。IIS7下默认是30M。因此需要配置几个项目进行支持大文件(最大2G)的上传。

1、配置错误

说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。

分析器错误消息: 属性“maxRequestLength”的值无效。错误为: 该值必须在 0-2097151 范围内。

如果出现以下错误:


  说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

 异常详细信息: System.Web.HttpException: 超过了最大请求长度。

那是因为配置的maxRequestLength超过了2097151。

解决办法1:

Web.config 配置:

<configuration><system.web><httpRuntime maxRequestLength="4096" executionTimeout="3600" /></system.web><configuration>

注意修改超时时间:executionTimeout.单位是:秒。

解决办法2:修改Global.asax.cs的Application_BeginRequest方法:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

Using System.Web.Configuration;

void Application_BeginRequest(object sender, EventArgs e)

        {

            //本代码的功能是检查页面请求的大小,如果超过了配置文件maxRequestLength的设定值,就提示用户超过了所允许的文件大小。

            //从配置文件里得到配置的允许上传的文件大小

            HttpRuntimeSection runTime = (HttpRuntimeSection)WebConfigurationManager.GetSection("system.web/httpRuntime");

            //maxRequestLength 为整个页面的大小,不仅仅是上传文件的大小,所以扣除 100KB 的大小,

            //maxRequestLength单位为KB

            int maxRequestLength = (runTime.MaxRequestLength) * 1024;

            //当前请求上下文的HttpApplication实例

            //HttpContext context = ((HttpApplication)sender).Context;

            //判断请求的内容长度是否超过了设置的字节数

            if (Request.ContentLength > maxRequestLength)

            {

                #region 不理解这些代码存在的意义

                /*

                //得到服务对象

                IServiceProvider provider = (IServiceProvider)context;

                HttpWorkerRequest workerRequest = (HttpWorkerRequest)provider.GetService(typeof(HttpWorkerRequest));

                //检查请求是否包含正文数据

                if (workerRequest.HasEntityBody())

                {

                    //请求正文数据的长度

                    int requestLength = workerRequest.GetTotalEntityBodyLength();

                    //得到加载的初始字节数

                    int initialBytes = 0;

                    if (workerRequest.GetPreloadedEntityBody() != null)

                        initialBytes = workerRequest.GetPreloadedEntityBody().Length;

                    //检查是否所有请求数据可用

                    if (!workerRequest.IsEntireEntityBodyIsPreloaded())

                    {

                        byte[] buffer = new byte[512000];

                        //设置要接收的字节数为初始字节数

                        int receivedBytes = initialBytes;

                        //读取数据,并把所有读取的字节数加起来,判断总的大小

                        while (requestLength - receivedBytes >= initialBytes)

                        {

                            //读取下一块字节

                            initialBytes = workerRequest.ReadEntityBody(buffer, buffer.Length);

                            //更新接收到的字节数

                            receivedBytes += initialBytes;

                        }

                        initialBytes = workerRequest.ReadEntityBody(buffer, requestLength - receivedBytes);

                    }

                }

                */

                #endregion

                //注意这里可以跳转,可以直接终止;在VS里调试时候得不到想要的结果,通过IIS才能得到想要的结果;FW4.0经典或集成都没问题

                htm = htm&("请求大小" + Request.ContentLength);

                Response.End();

            }

        }

2、问题:HTTP 错误 404.13 - Not Found


HTTP 错误 404.13 - Not Found

请求筛选模块被配置为拒绝超过请求内容长度的请求。

最可能的原因:

•Web 服务器上的请求筛选被配置为拒绝该请求,因为内容长度超过配置的值。

可尝试的操作:

•确认 applicationhost.config 或 web.config 文件中的 configuration/system.webServer/security/requestFiltering/[email protected] 设置。

详细错误信息:

模块

RequestFilteringModule

通知

BeginRequest

处理程序

PageHandlerFactory-Integrated

错误代码

0x00000000

原因:Web 服务器上的请求筛选被配置为拒绝该请求,因为内容长度超过配置的值(IIS 7 默认文件上传大小时30M)。

解决:更改asp.net文件上传大小限制

修改IIS的applicationhost.config

  文件位置: %windir%/system32/inetsrv/config/applicationhost.config

  找到<requestFiltering>节点,该节点下默认没有 <requestLimits maxAllowedContentLength="上传大小的值(单位:byte)" /> 元素。为这个节点添加如下元素:<requestLimits maxAllowedContentLength="2147483647" />  (上传的大小将改为2G)

 web.config中,添加如下内容

<configuration>  <system.web>     <httpRuntime maxRequestLength="2097151" executionTimeout="120"/>  </system.web></configuration>

说明:

  httpRuntime  配置 ASP.NET HTTP 运行时设置,以确定如何处理对 ASP.NET 应用程序的请求。

maxRequestLength (指示 ASP.NET 支持的最大文件上载大小)

    指定输入流缓冲阈值限制(以 KB 为单位)。此限制可用于防止拒绝服务攻击;例如,因用户向服务器发送大型文件而导致的拒绝服务攻击。

    默认值为 4096 (4 MB),最大值只能是2097151K。
       executionTimeout

    指定在被 ASP.NET 自动关闭前,允许执行请求的最大秒数。默认90秒。

    只有当 compilation 元素中的调试属性为 False 时,此超时属性才适用。若要帮助避免在调试期间关闭应用程序,请不要将此超时属性设置为较大值。

web.config中,把以下内容加在<system.webServer>节点

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

上述中maxAllowedContentLengt是以BK为单位。

时间: 2024-10-14 02:03:56

asp.net文件/大文件上传需要配置的项目整理的相关文章

asp.net实现大视频上传

IE的自带下载功能中没有断点续传功能,要实现断点续传功能,需要用到HTTP协议中鲜为人知的几个响应头和请求头. 一. 两个必要响应头Accept-Ranges.ETag 客户端每次提交下载请求时,服务端都要添加这两个响应头,以保证客户端和服务端将此下载识别为可以断点续传的下载: Accept-Ranges:告知下载客户端这是一个可以恢复续传的下载,存放本次下载的开始字节位置.文件的字节大小: ETag:保存文件的唯一标识(我在用的文件名+文件最后修改时间,以便续传请求时对文件进行验证): Las

[转]用C#如何实现大文件的断点上传

最近做在做一个项目,涉及到文件上传的问题. 以前也做过文件上传.但都是些小文件,不超过2m. 这次要求上传1g以上的东西. 没办法找来资料研究了一下. 基于web的文件上传可以使用ftp和http两种协议,用ftp的话虽然传输稳定,但安全性是个严重的问题,所以没有考虑. 剩下只有http. 在http中有3种方式,put.webdav.rfc1867,前2种方法不适合大文件上传,在这里也不说了. 确定使用rfc1867格式处理之后开始分析流行的上传组件.看了n多代码之后发现,目前无组件程序和一些

ASP.NET(C#)FileUpload实现上传限定类型和大小的文件到服务器&lt;from Copying&gt;

2009-02-15 11:52:54|  分类: 默认分类 |  标签: |举报 |字号大中小 订阅 ASP.NET(C#)FileUpload实现上传限定类型和大小的文件到服务器 2009-01-07 23:29 上传文件有两个主要的目的地,一个是服务器,另一个是数据库,ASP.NET内置了FileUpload这个上传控件,文本框显示用户选择的文件的全名. 其属性主要包括: ContenLength:上传文件大小,单位:字节 FileName:文件名称 HasFile:是否选择了文件 例子:

文件上传控件-如何上传文件-大文件断点续传

需求: 项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在20G内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以20G来进行限制. PC端全平台支持,要求支持Windows,Mac,Linux 支持所有浏览器. 支持文件批量上传 支持文件夹上传,且要求在服务端保留层级结构.文件夹数量要求支持到10W. 支持大文件断点续传,要求刷新浏览器,重启浏览器,重启电脑后仍然能够继续上传.文件大小要求能够支持到20个G. 支持自动加载本地文件,要求能够自动加载指定的本地文件.

[转]ExtJs入门之filefield:文件上传的配置+结合Ajax完美实现文件上传的asp.net示例

原文地址:http://www.stepday.com/topic/?459 作文一个ExtJs的入门汉子,学习起来的确是比较费劲的事情,不过如今在这样一个网络资源如此丰富的时代,依然不是那么难了的.基本上都是Copy过来加以部分改造即可实现自己想要的功能,加之如今的第三方开发者也大发慈悲地写出了API的帮助文档以及示例文档.关于ExtJs内的文件上传,将从以下几个方面进行展开讲解: 一.ExtJs文件上传版面的布局以及配置 因为ExtJs的文件上传组件filefield是基于form表单提交数

JSP-超大文件上传-如何上传文件-大文件上传

我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 首先我们需要了解的是上传文件三要素: 1.表单提交方式:post (get方式提交有大小限制,post没有) 2.表单的enctype属性:必须设置为multipart/form-data. 3.表单必须有文件上传项:file,且文件项需要给定name值 上传文件夹需要增加一个属性webkitdirectory,像这样: <input id="fileFolder" n

JS开发——文件夹的上传和下载

文件夹上传:从前端到后端 文件上传是 Web 开发肯定会碰到的问题,而文件夹上传则更加难缠.网上关于文件夹上传的资料多集中在前端,缺少对于后端的关注,然后讲某个后端框架文件上传的文章又不会涉及文件夹.今天研究了一下这个问题,在此记录. 先说两个问题: 是否所有后端框架都支持文件夹上传? 是否所有浏览器都支持文件夹上传? 第一个问题:YES,第二个问题:NO 只要后端框架对于表单的支持是完整的,那么必然支持文件夹上传.至于浏览器,截至目前,只有 Chrome 支持. 如果需要其它的浏览器支持则需要

PHP上传文件时无法上传成功,$_FILES[&#39;screenshot&#39;][&#39;tmp_name&#39;]为空

最近在学习<HeadFirst PHP & MySQL>一书的第5章"使用存储在文件中的数据",做一个文件上传的应用时,出现了错误,就是文件无法成功上传.这个问题困扰了我很久,不过还好最后终于解决了.原因是我上传的图片文件大小超过了HTML 表单中 MAX_FILE_SIZE 选项指定的值32768Bytes即32KB导致无法上传成功. 我使用了XAMPP(Apache + MySQL + PHP + Perl)集成开发包和Zend Studio 10.6作为PHP

[Plugin] WEB版一次选择多个文件进行批量上传(swfupload)的解决方案

URL:http://www.cnblogs.com/chillsrc/archive/2010/02/21/1670594.html 说明:功能完全支持ie和firefox浏览器! 一般的WEB方式文件上传只能使用FileUpload控件进行一个文件一个文件的进行上传,就算是批量上传,也要把文件一个一个的添加到页面,无法如 windows程序一样,一次选择多个文件进行批量上传.这样在某些应用上就显得很不人性化,有时候客户希望能够一次选择很多文件,然后让系统把选择的文 件全部上传. 这里,就将针