Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

PRB: Không thể tải lên tập tin lớn khi bạn sử dụng điều khiển máy chủ HtmlInputFile

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch máy của Microsoft chứ không phải do con người dịch. Microsoft cung cấp các bài viết do con người dịch và cả các bài viết do máy dịch để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng ngôn ngữ của bạn. Tuy nhiên, bài viết do máy dịch không phải lúc nào cũng hoàn hảo. Loại bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, giống như một người nước ngoài có thể mắc sai sót khi nói ngôn ngữ của bạn. Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra. Microsoft cũng thường xuyên cập nhật phần mềm dịch máy này.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này:295626
TRIỆU CHỨNG
Khi bạn cố gắng sử dụng các HtmlInputFile kiểm soát tải lên một tập tin lớn, các tập tin có thể không được tải lên.
NGUYÊN NHÂN
Vấn đề này xảy ra bởi vì mặc định giá trị cho các maxRequestLength tham số trong các <httpruntime></httpruntime> là phần của các tập tin Machine.config 4096 (4 MB). Do đó, các tập tin lớn hơn giá trị này không được tải lên theo mặc định.
GIẢI PHÁP
Để giải quyết vấn đề này, sử dụng một trong những phương pháp sau đây:
  • Trong tập tin Machine.config, thay đổi các maxRequestLength thuộc tính của các <httpruntime></httpruntime> cấu hình phần một giá trị lớn hơn. Sự thay đổi này ảnh hưởng đến toàn bộ máy tính.
  • Trong Web.config tập tin, ghi đè lên giá trị của maxRequestLength để áp dụng. Ví dụ, các mục sau đây trong Web.config cho phép tệp được nhỏ hơn hoặc bằng với 8 megabyte (MB) để được tải lên:
    <httpRuntime maxRequestLength="8192" />					
THÔNG TIN THÊM
Theo mặc định, giá trị này là bị giới hạn đến 4 MB để hạn chế các cuộc tấn công từ chối dịch vụ có thể.

Khi các maxRequestLength thuộc tính được đặt trong tập tin Machine.config và sau đó gửi một yêu cầu (ví dụ, một file upload) vượt quá giá trị của maxRequestLength, một lỗi tuỳ chỉnh trang web không thể hiển thị. Thay vào đó, Microsoft Internet Explorer sẽ hiển thị một thông báo lỗi "Không thể tìm thấy máy chủ hoặc DNS".

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

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

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

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

Bạn có thể nhận thấy các thông báo lỗi sau đây nếu bạn gặp phải giới hạn kích thước tệp trong quá trình tải lên tập tin:
  • Trang không thể hiển thị.
  • Máy chủ ứng dụng này Không sẵn dùng
    Trong sổ ghi sự kiện, các thông báo lỗi sẽ được tương tự như các sau:

    aspnet_wp.exe (PID:PIDNumber) đã được tái chế bởi vì bộ nhớ tiêu thụ vượt quá các SizeLimit MB (Tỷ lệ phần trăm phần trăm có sẵn RAM).

  • Ngoại lệ của kiểu System.OutOfMemoryException được ném.
Bạn cũng có thể thấy rằng tải lên xảy ra rất chậm. Nếu bạn xem Aspnet_wp.exe trình trong Windows Task Manager, bạn sẽ nhận thấy rằng các bộ nhớ delta đổi bởi 64 KB mỗi 1-2 giây. Tùy thuộc vào kích thước của các tập tin, sự chậm trễ này có thể gây ra ASP.NET công nhân quá trình tái chế vì một lỗi responseDeadlock.

Cảnh báo: Bài viết này được dịch tự động

Thuộc tính

ID Bài viết: 295626 - Xem lại Lần cuối: 08/25/2011 18:23:00 - Bản sửa đổi: 2.0

Microsoft ASP.NET 1.1, Microsoft ASP.NET 1.0

  • kbproductlink kbconfig kbprb kbservercontrols kbmt KB295626 KbMtvi
Phản hồi
d=1&t=">