2010-11-06 44 views
10

Bắt đầu từ hình thức bây giờ, lần đầu tiên, tôi nhận được lỗi này khi tôi bắt đầu gỡ lỗi ứng dụng MVC của tôiLỗi trên MVC ứng dụng debug: Xác nhận của ViewState MAC thất bại

Validation của viewstate MAC thất bại. Nếu ứng dụng này được lưu trữ bởi một trang web Trang trại hoặc cụm, đảm bảo rằng cấu hình chỉ định cùng một validationKey và xác thực thuật toán . Không thể sử dụng AutoGenerate trong một cụm.

Full stack trace

[ViewStateException: Invalid viewstate. 
    Client IP: 127.0.0.1 
    Port: 
    Referer: 
    Path: /Login/LogOn 
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.41 Safari/534.7 
    ViewState: Fvq7WNUu+qCC00VbTIOTUuBvK4YHjxp3RubwsrFYW93hKlF7I4GLzaNHceRqjjJB0GwvRPWwlwE6brhAZAo+Mp191B/C+l8Dw/w7aQBDCpWGC3ox6hkSeZp10vbjm9eJFQZmGSPyC1rKYwApBBaz0Q==] 

[HttpException (0x80004005): Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.] 
    System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) +198 
    System.Web.UI.ViewStateException.ThrowMacValidationError(Exception inner, String persistedState) +14 
    System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) +274 
    System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize(String serializedState) +4 
    System.Web.Mvc.AntiForgeryDataSerializer.Deserialize(String serializedToken) +176 

gì này có nghĩa là?

Xin lưu ý: lỗi xảy ra chỉ trong khi gỡ lỗi. Khi tôi triển khai ứng dụng trên IIS mọi thứ hoạt động. Mã xuất hiện trên mã sau trong trang cái của tôi

<form id="__AjaxAntiForgeryForm" action="#" method="post"> 
    <%= Html.AntiForgeryToken() %> 
</form> 
+0

Thử xóa bộ nhớ cache của trình duyệt của bạn. – UpTheCreek

+1

Chỉ cần thực hiện mà không thành công. Nếu tôi khởi động lại máy tính, mọi thứ hoạt động trong nửa giờ và sau đó vấn đề xuất hiện trở lại ... – Lorenzo

+0

Bạn có đang triển khai ứng dụng của mình trong máy chủ cân bằng tải không? Nếu không, hãy kiểm tra liên kết này tại đây: http://blogs.msdn.com/b/tom/archive/2008/03/14/validation-of-viewstate-mac-failed-error.aspx. – mallows98

Trả lời

2

Lý do ngay lập tức tại sao điều này xảy ra là do cookie chống vô hiệu bị vô hiệu. Đóng và mở lại trình duyệt sẽ khắc phục sự cố. Bạn cũng có thể thử xóa cookie được liên kết với trang web thử nghiệm của mình.

Bây giờ cho các nguyên nhân cơ bản, điều này thường xảy ra hoặc vì

  • bạn đang ở trong một tình huống nông trang web và máy chủ khác nhau của bạn không confiured theo cùng một cách (nhưng bạn đang nói đó không phải là trường hợp)
  • ứng dụng thay đổi MAC được tạo tự động vì những thay đổi bạn đang thực hiện cho cấu hình ứng dụng của mình
  • gần đây bạn đã áp dụng bản vá để sửa lỗ hổng mã hóa Asp.Net ViewState (thay đổi cách mã hóa được thực hiện trong asp.net).

Bất kỳ âm thanh nào quen thuộc?

+0

Tôi sẽ loại trừ điểm đầu tiên hoàn toàn. Trong mối quan hệ với điểm thứ hai và thrid tôi đã cài đặt các bản vá cho lỗ hổng ASP.NET gần đây thông qua Windows Update ngay khi chúng có sẵn nhưng vấn đề bắt đầu xuất hiện chỉ trong những ngày gần đây nhất khi tôi thêm Antiforgerytoken vào quan điểm của tôi . – Lorenzo

1

Chúng tôi đã gặp phải sự cố tương tự sau khi vá máy chủ để khắc phục lỗ hổng ASP.NET khi được xem trên máy mà không cần cài đặt KB2416471.

+0

Xin chào, cảm ơn bài đăng của bạn. Vấn đề dường như không liên quan đến tôi vì nó xuất hiện trên Vista x64 nơi mà bản vá bạn đang đề cập đến không có mặt. Dù sao tôi có KB2416470, KB2416472 và KB2416473 cài đặt thông qua Windows Update – Lorenzo

+0

@Lorenzo có, đáng ngạc nhiên, chúng tôi đã có vấn đề này khi xem một trang web từ máy mà không có bản vá được cài đặt. –

+0

Điều đó thật thú vị.Nhưng trong trường hợp của tôi có một cái gì đó kỳ lạ hơn: Nếu tôi cố gắng gỡ lỗi các ứng dụng trên máy tính của tôi (VS2010, SQLEXPRESS) vấn đề xuất hiện. Khi, thay vào đó tôi triển khai cục bộ luôn trên máy tính của mình (IIS7, SQL EXPRESS), vấn đề không xuất hiện ... – Lorenzo

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