Làm cách nào để tăng kích thước tệp tải lên tối đa trong ASP.NET?


237

Tôi có một hình thức chấp nhận tải lên tập tin trong ASP.NET. Tôi cần tăng kích thước tải lên tối đa lên trên mức mặc định 4 MB.

Tôi đã tìm thấy ở một số nơi tham chiếu mã dưới đây tại msdn .

[ConfigurationPropertyAttribute("maxRequestLength", DefaultValue = )]

Không có tài liệu tham khảo nào thực sự mô tả cách sử dụng nó và tôi đã thử một vài thứ mà không thành công. Tôi chỉ muốn sửa đổi thuộc tính này cho các trang nhất định đang yêu cầu tải lên tệp.

Đây có phải là con đường chính xác để đi? Và làm thế nào để tôi sử dụng này?


Bạn có chắc chắn đó là một giới hạn mã, và không phải là giới hạn máy chủ? IIS cũng có một giới hạn.
MrChrister

Tôi khá chắc chắn rằng đó là một giới hạn .Net. Câu trả lời dưới đây làm việc cho tôi.
Eddie

Câu trả lời:


406

Cài đặt này đi trong tệp web.config của bạn. Nó ảnh hưởng đến toàn bộ ứng dụng, mặc dù ... tôi không nghĩ bạn có thể đặt nó trên mỗi trang.

<configuration>
  <system.web>
    <httpRuntime maxRequestLength="xxx" />
  </system.web>
</configuration>

"Xxx" tính bằng KB. Mặc định là 4096 (= 4 MB).


6
Điều này đã cho tôi làm việc cho trang web rộng. Bây giờ tôi đặt nó thành 10240 (hoặc 10 MB). Cảm ơn!
Eddie

12
Xem câu trả lời của tôi nếu bạn đang chạy IIS7 + và điều này không hoạt động.
4 giờ sáng

Có thể hạn chế điều này với một bộ điều khiển?
Guillermo Varini

@Eddie tôi có hai tệp web.config tôi đã sử dụng nó trong cả hai nhưng nó không hoạt động. tôi làm nó như thế nào ?
Ahmad

2
Điều này có thể được thực hiện trên một con đường cụ thể. <location path = "Api / Trình điều khiển"> <system.web> <ủy quyền> <cho phép người dùng = "*" /> </ ủy quyền> <httpR.78 maxRequestLạng = "102400" /> </system.web> </ location> (không cần thẻ ủy quyền)
nios

181

Đối với IIS 7+, cũng như thêm cài đặt httpR.78 maxRequestLpm bạn cũng cần thêm:

  <system.webServer>
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="52428800" /> <!--50MB-->
      </requestFiltering>
    </security>
  </system.webServer>

Hoặc trong IIS (7):

  • Chọn trang web bạn muốn kích hoạt để chấp nhận tải lên tệp lớn.
  • Trong cửa sổ chính, nhấp đúp vào 'Yêu cầu lọc'
  • Chọn "Chỉnh sửa cài đặt tính năng"
  • Sửa đổi "Độ dài nội dung tối đa được phép (byte)"

Tôi đã quên về kilobyte: p
Andrew Myhre

10
bạn có thể sẽ cần phải thiết lập cả hai maxRequestLengthmaxAllowedContentLengthđể nó hoạt động ... xem stackoverflow.com/questions/6327452/
Khăn

7
@AndrewMyhre max ALLowedContentLpm tính bằng byte, không phải KB. Tài liệu Microsoft cho biết mặc định là 30 MB.
Dan Randolph

1
@DanRandolph thực tế mặc định là 30000000 (khoảng 28,6 MB), như được ghi lại tại iis.net/configreference/system.webserver/security/ trộm
aaaantoine 21/07/2016

Bạn chắc chắn cần cả hai cài đặt.
mohrtan

74

Để tăng giới hạn kích thước tệp tải lên, chúng tôi có hai cách

1. IIS6 trở xuống

Theo mặc định, trong ASP.Net, kích thước tối đa của tệp được tải lên máy chủ là khoảng 4 MB . Giá trị này có thể tăng lên bằng cách sửa đổi thuộc tính maxRequestLpm trong web.config .

Hãy nhớ rằng: maxRequestLenght tính bằng KB

Ví dụ : nếu bạn muốn hạn chế tải lên xuống 15MB, hãy đặt maxRequestLpm thành đường 15360 (15 x 1024).

<system.web>
   <!-- maxRequestLength for asp.net, in KB --> 
   <httpRuntime maxRequestLength="15360" ></httpRuntime> 
</system.web>

2. IIS7 trở lên

Một cách khác được sử dụng ở đây để tải lên tệp .IIS7 đã giới thiệu mô đun lọc yêu cầu . Đã thực hiện trước khi ASP.Net. Cách thức hoạt động của đường ống là giá trị IIS ( max ALLowedContentLạng ) được kiểm tra trước sau đó giá trị ASP.NET ( maxRequestLpm ) được kiểm tra. Thuộc tính max ALLowedContentLpm mặc định là 28,61 MB . Giá trị này có thể được tăng lên bằng cách sửa đổi cả hai thuộc tính trong cùng một web.config .

Ghi nhớ: max ALLowedContentLpm tính bằng byte

Ví dụ : nếu bạn muốn hạn chế tải lên xuống 15MB, hãy đặt maxRequestLpm thành Kiểu 15360, và max ALLowedContentLpm thành "15728640" (15 x 1024 x 1024).

<system.web>
   <!-- maxRequestLength for asp.net, in KB --> 
   <httpRuntime maxRequestLength="15360" ></httpRuntime> 
</system.web>

<system.webServer>              
   <security> 
      <requestFiltering> 
         <!-- maxAllowedContentLength, for IIS, in bytes --> 
         <requestLimits maxAllowedContentLength="15728640" ></requestLimits>
      </requestFiltering> 
   </security>
</system.webServer>

Liên kết tham khảo MSDN : https://msdn.microsoft.com/en-us/l Library / e1f13641 (VS.80) .aspx


17

Tôi tin rằng dòng này trong web.config sẽ đặt kích thước tải lên tối đa:

<system.web>

        <httpRuntime maxRequestLength="600000"/>
</system.web>

Sau khi dành một nửa ngày này là những gì đã giúp tôi !!! Cảm ơn rất nhiều !!!
Sagar Khatri

13

đối với giới hạn tối đa 2 GB, trên web.config ứng dụng của bạn:

<system.web>
  <compilation debug="true" targetFramework="4.5" />
  <httpRuntime targetFramework="4.5" maxRequestLength="2147483647" executionTimeout="1600" requestLengthDiskThreshold="2147483647" />
</system.web>

<system.webServer>
  <security>
    <requestFiltering>
      <requestLimits maxAllowedContentLength="2147483647" />
    </requestFiltering>
  </security>
</system.webServer>

7

Nếu windows 2003 / IIS 6.0 của nó thì hãy xem AspMaxRequestEntity ALLowed = "204800" trong tệp metabase.xml nằm trong thư mục C: \ windows \ system32 \ inetsrv \

Giá trị mặc định của "204800" (~ 205Kb) theo tôi là quá thấp đối với hầu hết người dùng. Chỉ cần thay đổi giá trị thành những gì bạn nghĩ nên là tối đa.

Nếu bạn không thể lưu tệp sau khi chỉnh sửa, bạn phải dừng máy chủ ISS hoặc cho phép máy chủ cho phép chỉnh sửa tệp:

văn bản thay thế
(nguồn: itmaskinen.se )

Chỉnh sửa: Tôi không đọc chính xác câu hỏi (cách đặt maxrequest trong webconfig). Nhưng thông tin này có thể là sự can thiệp cho những người khác, nhiều người chuyển trang web của họ từ win2000-server sang win2003 và có chức năng tải lên hoạt động và đột nhiên gặp lỗi Request.BinaryRead Lỗi sẽ sử dụng nó. Vì vậy, tôi để lại câu trả lời ở đây.


5

Tôi gặp vấn đề tương tự trong máy chủ IIS win 2008, tôi đã giải quyết vấn đề thêm cấu hình này trong web.config:

<system.web>
    <httpRuntime executionTimeout="3600" maxRequestLength="102400" 
     appRequestQueueLimit="100" requestValidationMode="2.0"
     requestLengthDiskThreshold="10024000"/>
</system.web>

Theo mặc định, requestL wavelDiskThrưỡng là 80000 byte nên quá nhỏ cho ứng dụng của tôi. requestL wavelDiskThrưỡng được đo bằng byte và maxRequestLpm được biểu thị bằng Kbytes.

Vấn đề là hiện tại nếu ứng dụng đang sử dụng một System.Web.UI.HtmlControls.HtmlInputFilethành phần máy chủ. Việc tăng requestLdropsDiskThrưỡng là cần thiết để giải quyết nó.


1
Theo msdn.microsoft.com/en-us/l Library / e1f13641 (v = vs.100) .aspx "Chỉ định giới hạn cho ngưỡng đệm của luồng đầu vào, tính bằng kilobyte. Giá trị này không được vượt quá thuộc tính maxRequestLpm." vậy nó có nên giống với chiều dài yêu cầu không?
Jeff

Có @Jeff, giá trị của requestL wavelDiskThr Ngưỡng phải nhỏ hơn maxRequestLpm, nhưng giá trị đầu tiên được biểu thị bằng byte. Nếu requestL wavelDiskThr Ngưỡng lớn hơn maxRequestLpm, một Cấu hìnhErrorsException sẽ được ném, do đó bạn có thể tự mình kiểm tra giá trị chính xác. Xem forum.asp.net/t/ Kẻ
Massimo Zerbini

4

Nếu bạn đang sử dụng Framework 4.6

<httpRuntime targetFramework="4.6.1" requestValidationMode="2.0" maxRequestLength="10485760"  />

4

Kích thước tệp tối đa có thể được giới hạn trong một Bộ điều khiển MVC đơn hoặc thậm chí là Hành động.
Thẻ web.config <location> có thể được sử dụng cho việc này:

<location path="YourAreaName/YourControllerName>/YourActionName>">
  <system.web>
    <!-- 15MB maxRequestLength for asp.net, in KB 15360 -->
    <httpRuntime maxRequestLength="15360" />
  </system.web>
  <system.webServer>
    <security>
      <requestFiltering>
        <!-- 15MB maxAllowedContentLength, for IIS, in bytes 15728640 -->
        <requestLimits maxAllowedContentLength="15728640" />
      </requestFiltering>
    </security>
  </system.webServer>
</location>

Hoặc bạn có thể thêm các mục này trong web.config của khu vực.


Điều này nên cao hơn và được sử dụng thay vì câu trả lời được chấp nhận, vì điều này an toàn hơn để xác thực kích thước yêu cầu.
Jonathan Ortega

4

Tôi biết đó là một câu hỏi cũ.

Vì vậy, đây là những gì bạn phải làm:

Trong tệp web.config, hãy thêm tệp này vào <system.web>:

<!-- 3GB Files / in kilobyte (3072*1024) -->
<httpRuntime targetFramework="4.5" maxRequestLength="3145728"/>

và điều này dưới đây <system.webServer>:

<security>
    <requestFiltering>

      <!-- 3GB Files / in byte (3072*1024*1024) -->
      <requestLimits maxAllowedContentLength="3221225472" />

    </requestFiltering>
</security>

Bạn thấy trong các bình luận làm thế nào điều này hoạt động. Trong một bạn cần phải có sie tính bằng byte và trong một cái khác tính bằng kilobyte. Mong rằng sẽ giúp.


2

Bạn có thể viết khối mã đó trong tệp web.config ứng dụng của bạn.

<httpRuntime maxRequestLength="2048576000" />
<sessionState timeout="3600"  />

Bằng cách viết mã đó, bạn có thể tải lên một tệp lớn hơn bây giờ


0

Nếu bạn sử dụng sharepoint, bạn cũng nên định cấu hình kích thước tối đa với Công cụ quản trị: kb925083


0

Tôi có một bài đăng trên blog về cách tăng kích thước tệp để kiểm soát tải lên asp .

Từ bài viết:

Theo mặc định, điều khiển FileUpload cho phép tải lên tối đa 4 MB tệp và thời gian thực hiện là 110 giây. Các thuộc tính này có thể được thay đổi từ trong phần httpR.78 của tệp web.config. Thuộc tính maxRequestLpm xác định kích thước tệp tối đa có thể được tải lên. Thuộc tính execTimeout xác định thời gian tối đa để thực hiện.


0

Nếu nó hoạt động trong máy cục bộ của bạn và không hoạt động sau khi triển khai trong IIS (tôi đã sử dụng Windows Server 2008 R2), tôi có một giải pháp.

Mở IIS (inetmgr) Truy cập trang web của bạn Ở phía bên phải, đi đến Nội dung (Lọc yêu cầu) Chuyển đến Chỉnh sửa cài đặt tính năng Thay đổi kích thước nội dung tối đa là (Byte bạn yêu cầu) Điều này sẽ hoạt động. Bạn cũng có thể nhận trợ giúp từ chủ đề sau http://www.iis.net/configreference/system.webserver/security/requestfiltering/requestlimits


0

Nếu bạn sử dụng ssl cert, cài đặt F5 của đường dẫn ssl của bạn configure.Important.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.