2010-04-06 20 views
8

Trong trang có một ViewState kéo dài 10-15KB là gì gì sẽ là một giá trị tối ưu chomột giá trị tối ưu cho MaxPageStateFieldLength trong ASP.NET

<pages maxPageStateFieldLength="">

trong web.config để giảm nguy cơ cắt ngắn tiềm năng dẫn đến lỗi xác nhận xem trước?

+0

bạn đã tối ưu hóa việc sử dụng ViewState chưa? Có lẽ bạn có thể giảm kích thước vô hiệu hóa nó khi nó không cần thiết và bạn sẽ không cần sử dụng maxPageStateFieldLength –

+0

Viết lại toàn bộ viewstate hoàn toàn để bao gồm nén, có. –

Trả lời

1

maxPageStateFieldLength không giới hạn kích thước của trạng thái chế độ xem, vì vậy nó sẽ không bị cắt bớt.

Điều gì nó chỉ đơn giản là kiểm soát số lượng trạng thái xem sẽ được đặt trong một trường bị ẩn. Nếu trạng thái xem lớn hơn giá trị maxPageStateFieldLength thì trạng thái xem sẽ chỉ được chia thành nhiều trường ẩn.

Giá trị mặc định là -1, có nghĩa là trạng thái chế độ xem được đặt trong một trường bị ẩn, thường là trường tối ưu nhất.

+2

Vâng, đó là lý do tại sao tôi yêu cầu một giá trị tối ưu, tôi hiểu nó làm gì. Tôi đã nhìn thấy con số thấp tới 40, 100 trường hợp khác là 1000, tôi chưa thực sự thấy bất kỳ lý do nào cho bất kỳ số nào vì nó có vẻ như chỉ là các lựa chọn tùy ý mà không phải là quyền hạn của 2. –

+0

@Chris: Lý do duy nhất mà tôi thấy để sử dụng bất kỳ giá trị nào khác ngoài giá trị mặc định, là nếu bạn cần giới hạn kích thước của các giá trị trường cho một số lý do. Nếu bạn có nhu cầu như vậy, giá trị tối ưu nhất sẽ là giá trị cao nhất mà bạn có thể sử dụng. – Guffa

+4

Nếu tôi biết số đó là gì thì tôi sẽ không đăng câu hỏi này. Lý do tính năng này đã được thêm vào ASP.NET trở lại trong 2.0 là antiviruses/router/proxy/etc có khả năng cắt ngắn một lĩnh vực lớn duy nhất ẩn mà sau đó chính xác gây ra các pagestate là không hợp lệ. Vì đây là một vấn đề của khách hàng mà không thể tái sản xuất cụ thể là lý do tại sao tôi đang tìm kiếm một số loại đồng thuận về chính xác giá trị tối ưu cho điều này không phải là giá trị mặc định là -1. –

0

Tôi hiện đang gặp phải sự cố khi chúng tôi gặp lỗi "HttpException Do không hợp lệ Viewstate" chỉ cho người dùng Firefox. Tôi cũng thấy "System.Web.HttpException: Đã xảy ra lỗi khi giao tiếp với máy chủ từ xa. Mã lỗi là 0x80070001" ngoại lệ được ghép nối với các trường hợp ngoại tuyến.

Tôi tin rằng firefox có thể có kích thước tối đa trên (có thể) các trường biểu mẫu ẩn - tôi cần phải xác minh điều này. Tôi đang tìm cách để chunk lên các viewstate bằng cách sử dụng maxPageStateFieldLength để hy vọng giải quyết (trong ngắn hạn). Giải pháp dài hạn là tái cấu trúc trang aspx để thực hiện truy vấn phân trang cho lưới (thay vì kéo tất cả các hàng trong một lần - đó không phải là điều tốt để làm).

IMHO, bạn nên đặt tối đa là khá lớn nhưng không giới hạn. Tôi muốn nói 1MB là một sự khởi đầu.

+0

Tôi đã nhìn thấy hành vi đó với trạng thái xem chỉ nằm trong phạm vi 10-15KB, đó là lý do tại sao tôi giả định rằng giá trị chunking sẽ nhỏ, có thể là 512bytes hoặc cái gì đó nhưng thậm chí cố gắng thấp đến mức tôi chưa bao giờ thấy lỗi biến mất. Nó chỉ khiến tôi từ bỏ các biểu mẫu web và chuyển tất cả phát triển mới sang MVC. –

+0

Cảm ơn bạn đã đăng bài Chris. Và điều này không khắc phục được sự cố. Tôi đã nhìn thấy các bài đăng về các máy chủ proxy cắt xén các trường ẩn lớn. Tôi cũng đang hướng tới việc loại bỏ quang cảnh. Đó là một cơn đau ở mông. Thật không may, rất nhiều mã di sản và di chuyển đến MVC là trận chiến khó khăn. Ồ, người ta có thể mơ. –

+0

Chúc may mắn với loại bỏ ViewState Tôi không nghĩ rằng nó có thể nếu bạn sử dụng hầu như bất kỳ loại điều khiển, tôi đã thử rằng tuyến đường với việc phát hành .NET4 được cho là làm cho nó có thể và không bao giờ có bất cứ nơi nào. Để chuyển sang MVC, chúng tôi chỉ đang theo dõi một sự chuyển đổi đáng kinh ngạc khi chúng tôi sửa chữa lớn bất kỳ tính năng hiện có nào đáng kể nó bị kéo ra khỏi các dự án cũ và chuyển sang. –

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