2009-06-24 35 views
17

Tôi muốn có nhiều hơn 1 cài đặt cho giới hạn tải lên kích thước tệp tối đa (ví dụ: một cho Tệp/Mới, khác cho hình ảnh/mới). Tất cả các Tác vụ của tôi đều có các tham số bổ sung (ví dụ:/File/New? FolderId = 234).giới hạn tải lên kích thước tệp trong ASP.NET MVC: nhiều hơn 1 cài đặt maxRequestLength trong web.config (s)

thiết lập đơn làm việc như mong đợi:

<httpRuntime executionTimeout="60" maxRequestLength="1024" /> 

Tôi cố gắng để có 2 thiết lập với 2 phần vị trí trong web.config gốc, nhưng không có bất kỳ thành công. Tôi không chắc chắn những gì để viết trong "con đường" - trang aspx vật lý của một cái nhìn, hoặc điều khiển + hành động ... tuy nhiên, không có gì có vẻ làm việc.

<location path="/File/"> 
    <system.web> 
     <httpRuntime executionTimeout="60" maxRequestLength="4096" /> 
    </system.web> 
</location> 
<location path="/Picture/"> 
    <system.web> 
     <httpRuntime executionTimeout="60" maxRequestLength="1024" /> 
    </system.web> 
</location> 

Tôi đã cố gắng đặt một web.config khác trong một thư mục xem cụ thể (ví dụ/Views/Picture/...), giống như nó hoạt động trong Webform cổ điển ASP.NET, nhưng điều này dường như không làm thủ thuật ...

<location path=""> 
    <system.web> 
     <httpRuntime executionTimeout="60" maxRequestLength="1024" /> 
    </system.web> 
</location> 

Không có vấn đề gì tôi làm, chỉ có một giá trị cho httpRuntime.maxRequestLength được áp dụng - trong (root) web.config ... system.web.

Trả lời

11

tôi tin rằng các thuộc tính con đường không nên bắt đầu hoặc kết thúc với một "/" - vì vậy bạn nên có:

<location path="File"> 
    <system.web> 
    <httpRuntime executionTimeout="60" maxRequestLength="4096" /> 
    </system.web> 
</location> 
<location path="Picture"> 
    <system.web> 
    <httpRuntime executionTimeout="60" maxRequestLength="1024" /> 
    </system.web> 
</location> 

thư mục cấp ảo hoặc thể chất của bạn Web.config không nên có các thành phần vị trí <>.

Điều đó sẽ phân loại bạn.

Các tài liệu cho các Location element thậm chí có ví dụ này rất:

Sau đây mã ví dụ cho thấy làm thế nào để thiết lập các giới hạn kích thước tập tin tải lên đến 128 KB cho chỉ trang nào đó.

<configuration> 
    <location path="UploadPage.aspx"> 
    <system.web> 
     <httpRuntime maxRequestLength="128"/> 
    </system.web> 
    </location> 
</configuration> 
+0

Bạn hoàn toàn đúng, tất nhiên. Tôi đã thử mọi biến thể có thể có ("Hình ảnh", "/ Hình ảnh", "Hình ảnh /", "/ Hình ảnh /", "Lượt xem/Ảnh", v.v.), nhưng khi đăng câu hỏi của tôi, tôi đã chọn "/ Picture /" rõ ràng là sai. Tuy nhiên, nó không hoạt động vì một số lý do khác. Tôi refactored mã (thay đổi cách các tham số được cung cấp - bây giờ như tham số chuỗi truy vấn) và nó bắt đầu hoạt động đúng, nhưng tôi không hoàn toàn chắc chắn vấn đề là gì. :-(Dù sao cũng cảm ơn bạn! :-) – Alex42

0

Giải pháp này là chưa đầy đủ, vì IIS 7 có "Yêu cầu Filtering" Cài đặt giới hạn 30MB theo mặc định. Bạn nên tăng thông số này, xem chi tiết trong my blogpost

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