2010-04-06 64 views
6

Tôi vừa thực hiện chạy thử nghiệm nâng cấp dự án lên ASP.Net MVC 2 (RTM) với dự đoán đầy đủ chính thức .Net 4.0 phát hành vào cuối tháng này.ASP.Net MVC2 (RTM) ngắt phản hồi lọc - "Lọc không được phép"

Ứng dụng của chúng tôi đang sử dụng trình tối ưu hóa cho CSS và javascript của chúng tôi. Để làm như vậy, nó đang sử dụng thuộc tính HttpResponse.Filter để đặt bộ lọc tùy chỉnh.

Khi nâng cấp, trình cài đặt cho thuộc tính này đang ném một số HttpException cho biết "Không cho phép lọc". Nhìn rằng HttpResponse.Filter tài sản trong phản xạ cho thấy điều này:

set 
    { 
     if (!this.UsingHttpWriter) 
     { 
      throw new HttpException(SR.GetString("Filtering_not_allowed")); 
     } 

...

private bool UsingHttpWriter 
{ 
    get 
    { 
     return ((this._httpWriter != null) && (this._writer == this._httpWriter)); 
    } 
} 

Rõ ràng một cái gì đó đã thay đổi trong cách HttpResponse được văn bản cho dòng đầu ra trong MVC2. Có ai biết sự thay đổi là gì hay ít nhất là một giải pháp cho việc này?

EDIT: Điều này có vẻ khá căn bản. Một số điều tra thêm cho thấy rằng ASP.Net MVC 2 RTM đang sử dụng một System.Web.Mvc.ViewPage.SwitchWriter là tài sản đầu ra của một HttpResponse, trong khi MVC 1 đã sử dụng một đồng bằng cũ HttpWriter. Điều đó giải thích lý do tại sao ngoại lệ được ném ra.

Nhưng điều đó không giải thích lý do tại sao họ đã chọn hoàn toàn phá vỡ chức năng này. This thread dường như chỉ ra rằng đây chỉ là tạm thời ... nhưng điều này làm cho tôi khá lo lắng ... đây là RTM sau khi tất cả.

Bất kỳ nhận xét nào khác được đánh giá cao về điều này.

+0

Đối với những gì đáng giá, MVC 2 RTM đã được phát hành: http://www.microsoft.com/downloads/details.aspx?FamilyID=c9ba1fe1-3ba8-439a-9e21-def90a8615a9&displaylang=vi – Jaxidian

+0

Cảm ơn - đó là những gì Tôi đang cố nâng cấp lên. Tôi nên làm cho tiêu đề rõ ràng hơn. – womp

+0

Những gì bạn đang cố gắng làm có thể không bao giờ được hỗ trợ ngay từ đầu. Nếu bạn đang cố gắng móc nối nội dung tĩnh được phân phối như thế nào, đừng đi qua công cụ xem WebForms để kéo nó đi. Chính xác thì bạn đang cố gắng làm gì? Tại sao bạn cần một bộ lọc để kéo nó ra? – Levi

Trả lời

3

Chế độ xem trong MVC, không giống như các trang .aspx thông thường, có nghĩa là được coi là hệ thống templating HTML. Vấn đề ở đây bắt nguồn từ thực tế rằng sau khi chế độ xem đã bắt đầu thực hiện, trang đã cố gắng cài đặt bộ lọc phản hồi để thao tác HTML được gửi tới ứng dụng khách.

Giải pháp trong trường hợp này là di chuyển cài đặt bộ lọc phản hồi sang phần trước của đường ống MVC. Ví dụ, bằng cách sử dụng một bộ lọc hành động tùy chỉnh, bạn có thể ghi đè lên phương thức OnResultExecuting() để cài đặt bộ lọc phản hồi tùy chỉnh của bạn. Thao tác này sẽ di chuyển cài đặt ra khỏi chế độ xem và không vi phạm nguyên tắc của chế độ xem chỉ HTML đơn giản.

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