2013-03-06 9 views
5

Tôi đang sử dụng Kiểm soát tải lên tệp trong ASP.Net, theo cách tiếp cận blog bên dưới.Kích thước tệp tối đa cho phép bằng cách tải lên tệp ASP.NET Kiểm soát

http://weblogs.asp.net/jgalloway/archive/2008/01/08/large-file-uploads-in-asp-net.aspx

Giá trị mặc định 4MB được thiết lập trong Machine.config, nhưng bạn có thể ghi đè lên nó trong bạn web.config. Ví dụ, để mở rộng giới hạn tải lên tới 20MB, bạn muốn làm điều này:

<system.web> 
    <httpRuntime executionTimeout="240" maxRequestLength="20480" /> 
</system.web> 

Câu hỏi: Đến mức độ (MAX size) i có thể tăng chiều dài yêu cầu và những gì sẽ được thực hiện tác động trên trang web nếu chúng tôi cũng cho phép người dùng tải lên 50-60 MB tệp.

+0

Tác động hiệu suất cũng sẽ là mỗi khi ai đó tải lên một tệp lớn, nó sẽ sử dụng nhiều băng thông đó ..... – Liam

+0

khoảng 2 GB cho IIS 7 (nhưng @Liam xem xét về băng thông là đúng). Nếu bạn thực sự cần điều đó ... tốt hơn là triển khai giao diện khác để tải lên tệp (ví dụ: sử dụng POST và tiện ích bổ sung cho trình duyệt tùy chỉnh). –

+0

@ Liam, @ Adriano Ứng dụng này sẽ được lưu trữ trên mạng nội bộ và do đó băng thông sẵn có hơn. Nhưng tôi muốn hạn chế người sử dụng một số giới hạn như IIS được tham gia vào phục vụ 100MB-200MB tập tin những người dùng khác của trang web sẽ nhận được hiệu suất thấp hơn. – Pratik

Trả lời

5

Mức tối đa 'lý thuyết' cho trường maxRequestLength là giá trị lớn nhất cho loại dữ liệu số nguyên 32 bit đã ký (Int32.MaxValue).

Tuy nhiên, bạn sẽ phải kiểm tra tải lên để hiểu hiệu suất của mình.

EDIT:

Từ a Microsoft support ticket:

Về mặt lý thuyết, kích thước tập tin tải lên tối đa là khá lớn. Tuy nhiên, vì giám sát sức khỏe ASP.NET, bạn không thể tải lên các tệp rất lớn trong ASP.NET. Quá trình công nhân ASP.NET có địa chỉ ảo không gian 2 gigabyte (GB). Tuy nhiên, quá trình công nhân ASP.NET chỉ sử dụng nhiều hơn 1 GB vì theo dõi sức khỏe và bộ nhớ phân đoạn .

Trong quá trình tải lên, ASP.NET tải toàn bộ tệp trong bộ nhớ trước khi người dùng có thể lưu tệp vào đĩa. Do đó, quá trình có thể tái chế vì thuộc tính memoryLimit của thẻ processModel trong tệp Machine.config. Thuộc tính memoryLimit chỉ định tỷ lệ phần trăm bộ nhớ vật lý mà quá trình công nhân ASP.NET có thể xả trước khi quá trình được tự động tái chế. Tái chế ngăn ngừa rò rỉ bộ nhớ khiến ASP.NET bị lỗi hoặc ngừng đáp ứng .

Ngoài ra, các yếu tố khác đóng vai trò trong kích thước tệp tối đa có thể tải lên . Các yếu tố này bao gồm bộ nhớ có sẵn, có sẵn không gian đĩa cứng, tốc độ xử lý và lưu lượng mạng hiện tại. Với lưu lượng truy cập thông thường của các tệp đang được tải lên, Microsoft khuyên bạn nên sử dụng kích thước tệp tối đa trong phạm vi từ 10 đến 20 megabyte (MB). Nếu bạn hiếm khi tải lên tệp, kích thước tệp tối đa có thể là 100 MB.

Lưu ý Bạn có thể tải lên các tệp lớn hơn 100 MB trong ASP.NET. Tuy nhiên, Microsoft khuyên bạn nên thực hiện theo các tệp tải lên tối đa kích thước được đề cập trong bài viết này. Để xác định chính xác hơn các kích thước tệp , thực hiện kiểm tra căng thẳng trên các máy tính tương tự như các thiết bị sẽ được sử dụng trong sản xuất.

+0

-1, không, nó được biểu thị ** bằng KB ** và giới hạn thấp hơn nhiều (2.097,152 KB = 2 GB) –

+0

@Adriano Tôi không đề cập gì về trình độ của số. Tuy nhiên, nó là tốt để biết rằng nó là KB, tôi sẽ cập nhật câu trả lời của tôi. –

+0

@DavinTryon Việc giải thích là rất hữu ích trong việc biện minh cho các giới hạn của điều khiển tải lên tệp ASP.net. Cảm ơn rất nhiều. – Pratik