Có một vài lý do này có thể xảy ra:
Auto-Generated Máy Keys:
Nếu hồ ứng dụng của bạn có mặc định thời gian chờ nhàn rỗi của 20 phút và bạn đang sử dụng xác nhận tự động tạo ra và các khóa giải mã sau đó mỗi lần nhóm bắt đầu nó sẽ tạo ra một bộ khóa mới. Thao tác này sẽ vô hiệu hóa chế độ xem được mã hóa của trình duyệt. Bạn cũng sẽ thấy rằng các hình thức xác thực vé cho vé liên tục cũng sẽ trở thành không hợp lệ.
Để khắc phục bộ này những chìa khóa để các giá trị cố định trong:
`c:\%systemroot%\microsoft.net\framework\v2.0.50727\CONFIG\machine.config`
Bạn cần phải thêm các yếu tố <machineKey>
cấu hình phần <system.web>
. Có một bài viết khá tốt ở đây giải thích làm thế nào để làm điều này:
How To: Configure MachineKey in ASP.NET 2.0
Cuộn xuống phần trên "Web Farm Deployment Considerations" và Tạo được mã hóa phím ngẫu nhiên.
Nếu bạn đang chạy trang web tải cân bằng, bạn cũng cần đặt khóa máy của mỗi máy chủ chính xác với cùng một giá trị.
không đúng giá trị hình thức action
(3.5SP1):
Ngoài ra còn có một trường hợp (bài 3.5SP1) mà nếu bạn thiết lập các action
thuộc tính của hình thức ASP.NET của bạn để một cái gì đó khác hơn là trang được đăng lại và bạn không sử dụng đăng lại trang sau, bạn sẽ gặp phải lỗi này. Nhưng bạn sẽ thấy điều này ngay lập tức:
Validation of viewstate MAC failed after installing .NET 3.5 SP1
Timing/Dài Chạy Trang:
Ngoài ra còn có một trường hợp cạnh cho các trang mà phải mất một thời gian dài để làm cho nơi mà nếu trang được hiển thị một phần và đăng lại xảy ra:
Validation of viewstate MAC failed error
Nguyên nhân gốc Ngoại lệ này xuất hiện vì Điều khiển bằng cách sử dụng DataKeyNames yêu cầu Viewstate phải được mã hóa. Khi Viewstate được mã hóa (Chế độ mặc định , Tự động, là mã hóa nếu các điều khiển yêu cầu, nếu không không), Trang thêm trường trước khi đóng thẻ .Nhưng trường ẩn này có thể chưa được hiển thị cho trình duyệt có các trang chạy dài và nếu bạn đăng lại trước khi xuất hiện, trình duyệt sẽ bắt đầu postback mà không cần trường này (trong bộ sưu tập biểu mẫu). Kết quả cuối cùng là nếu trường này là bỏ qua khi đăng lại, trang không biết rằng Viewstate được mã hóa và gây ra Ngoại lệ nói trên. I.E. trang dự kiến sẽ được nạp đầy đủ trước khi bạn thực hiện đăng lại.
Rất vui khi bạn làm việc đó, tôi chưa bao giờ nghĩ về thời gian chờ nhàn rỗi và cho rằng đó sẽ là một giá trị hợp lý. Dù sao tôi có được một upvote cho nỗ lực? :) – Kev
Haha chắc chắn, cảm ơn sự giúp đỡ của bạn! – Curt
Hmmm bạn có thể thử chỉnh sửa câu trả lời của mình không? Nó tuyên bố khóa của nó cho đến khi nó được chỉnh sửa, sau đó tôi có thể bỏ phiếu: S – Curt