2011-01-21 34 views
11

Tôi hiện đang có một dự án ASP.NET MVC có tải lên tệp và nó hoạt động tuyệt vời nếu người dùng có kết nối đủ tốt và tệp của họ có kích thước hợp lý.ASP.NET MVC Tải lên tập tin thời gian ra

Vấn đề tôi gặp phải là đôi khi người dùng có thể có kết nối 56k (cách họ có thể sống với nó trong ngày và tuổi này, tôi không biết) hoặc đang tải lên tệp lớn hơn hoặc kết hợp cả hai.

Tôi muốn giữ một khoảng thời gian chờ nhỏ cho các trang bình thường (90 giây hoặc lâu hơn), nhưng cho phép thời gian chờ lớn hơn cho các hành động mà người dùng đang tải lên. Đây chỉ là một hành động, vì vậy tôi không ngại đặt mã bên trong chỉ là hành động số ít hơn là một giải pháp chung chung.

Cuối cùng, giải pháp sẽ tự động tăng thời gian chờ nếu Request.Files.Count> 0 sẽ là tốt nhất.

+5

Tôi đang quay số. Tôi sống ở Jamaica. –

+0

Thời gian chờ là gì? Nếu bạn không nhận được bất kỳ thứ gì từ khách hàng sau 90 giây hoặc lâu hơn, có thể bạn sẽ không tải lên thành công bất kỳ thứ gì. – chris

+0

Tôi liên tục nhận được dữ liệu, chris, nhưng gửi thậm chí 10 megs trên 56k sẽ mất hơn 90 giây. – ckknight

Trả lời

8

Tôi không chắc chắn nếu điều này sẽ làm việc trong một dự án MVC, nhưng bạn có thể thử tạo một vị trí trong web.config của bạn và đặt thời gian chờ thực hiện chỉ URL tải lên của bạn. Ví dụ:

<location path="YourUrl"> 
    <system.web> 
    <httpRuntime executionTimeout="9001"/> 
    </system.web> 
</location> 
+0

Tính năng này hoạt động. Bạn cũng có thể thêm maxRequestLength vào đây (trên thẻ httpRuntime) nếu bạn muốn cho phép các yêu cầu lớn hơn chỉ cho trình xử lý tải lên. –

+2

thời gian chờ thực hiện của anh là hơn 9000! –

2

Bạn có thể cần phải tăng thời gian chờ trong web.config:

<httpRuntime executionTimeout="01:00:00" /> 

Bây giờ đây là Overridable trong file web.config phụ có nghĩa là nếu bạn muốn tăng thời gian chờ chỉ dành cho kịch bản tải lên bạn có thể viết một trình xử lý HTTP chung sẽ xử lý các tệp tải lên và đặt nó vào thư mục con của riêng nó bằng web.config riêng của nó.

0

vấn đề có thể xảy ra: Nếu nó không phải là một thời gian chờ vì hoạt động không, có lẽ một cái gì đó để làm với việc xây dựng trong giới hạn kích thước, trong web.config httpRuntime phần bạn có thể thêm/tăng maxRequestLength="" để giới hạn kích thước của bạn

Các vấn đề liên quan