2012-05-02 35 views

Trả lời

16

Khi ViewState trong trang của bạn trở nên rất lớn, có thể có vấn đề vì một số tường lửa và proxy sẽ ngăn truy cập vào các trang có kích thước ViewState lớn. Với mục đích này, ASP.NET giới thiệu cơ chế ViewState Chunking. Vì vậy, ASP.NET cho phép tách lĩnh vực ẩn duy nhất của ViewState thành một số bằng cách sử dụng thuộc tính MaxPageStateFieldLength trong phần web.config.

Khi thuộc tính MaxPageStateFieldLength được đặt thành số dương, trạng thái xem được gửi tới trình duyệt của khách hàng được chia thành nhiều trường bị ẩn.

Đặt thuộc tính MaxPageStateFieldLength thành số âm (mặc định) cho biết trường trạng thái chế độ xem không được tách thành các đoạn. Việc đặt MaxPageStateFieldLength thành một số nhỏ có thể dẫn đến hiệu suất kém.

mẫu ViewState trước:

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"value="/wEPDwUKLTk2Njk3OTQxNg9kFgICAw9kFgICCQ88KwANAGQYAQUJR3Jp 
ZFZpZXcxD2dk4sjERFfnDXV/hMFGAL10HQUnZbk=" /> 

Sau đó thiết lập trong web.config:

<pages maxPageStateFieldLength="40"> 

mẫu ViewState Sau:

<input type="hidden" name="__VIEWSTATEFIELDCOUNT" id="__VIEWSTATEFIELDCOUNT"value="3" /> 
<input type="hidden" name="__VIEWSTATE" 
id="__VIEWSTATE" value="/wEPDwUKLTk2Njk3OTQxNg9kFgICAw9kFgICCQ88" /> 
<input type="hidden" name="__VIEWSTATE1" 
id="__VIEWSTATE1" value="KwANAGQYAQUJR3JpZFZpZXcxD2dk4sjERFfnDXV/" /> 
<input type="hidden" name="__VIEWSTATE2" 
id="__VIEWSTATE2" value="hMFGAL10HQUnZbk=" /> 

hy vọng nó giúp bạn!

+1

giải thích tốt đẹp, nhờ – Sujit

+1

Trường ẩn EVENTVALIDATION cũng có thể trở nên lớn. Có thể chunk này cũng? –

+0

xin lưu ý rằng phần tử nằm bên trong phần tử trong web.config. – woohoo

4

Từ What's New in ASP.NET State Management - MSDN

Nếu số lượng dữ liệu xem tình trạng trở nên quá lớn, xem trạng thái chunking sẽ tự động chia dữ liệu thành nhiều phần và đặt dữ liệu thành nhiều lĩnh vực tiềm ẩn dạng.

Tại sao chúng ta cần Viewstream Chunking?

Dưới đây là một exerpt từ ViewState Overivew - MSDN

Một yếu tố quan trọng là nếu số lượng dữ liệu trong một lĩnh vực ẩn trở thành lớn, một số proxy và tường lửa sẽ ngăn truy cập vào các trang có chứa chúng. Vì số tiền tối đa có thể thay đổi với việc triển khai tường lửa và proxy khác nhau, các trường ẩn lớn có thể gây ra sự cố không thường xuyên. Để giúp tránh vấn đề này, nếu số tiền dữ liệu lưu trữ trong thuộc tính ViewState vượt quá giá trị quy định tại sở hữu MaxPageStateFieldLength của trang, chia tách trang xem trạng thái thành nhiều lĩnh vực tiềm ẩn để giảm kích thước của từng lĩnh vực cá nhân dưới đây kích thước mà tường lửa từ chối.

+0

@Downvoter care to comment? – Habib

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