2011-04-13 305 views
10

可能重複:
Setting ViewStateUserKey gives me a 「Validation of viewstate MAC failed」 error驗證失敗

我已經應用在計算器上的職位的解決方案,但他們並沒有對我的問題制定出。

問題的細節是:

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. 

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Web.HttpException: 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. 

[HttpException (0x80004005): Unable to validate data.] 
    System.Web.Configuration.MachineKeySection.GetDecodedData(Byte[] buf, Byte[] modifier, Int32 start, Int32 length, Int32& dataLength) +10986325 
    System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) +295 

[ViewStateException: Invalid viewstate. 
    Client IP: 131.155.68.60 
    Port: 53999 
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16 
    ViewState: /wEPDwULLTIxNDQxNzQ5ODlkZDYHBedPRvEzZrTTrJvp9yAr5yfa 
    Referer: http://rms.rextron.eu/login.aspx?ReturnUrl=%2fdefault.aspx 
    Path: /login.aspx] 

[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) +148 
    System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) +10959605 
    System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState) +59 
    System.Web.UI.HiddenFieldPageStatePersister.Load() +10959704 
    System.Web.UI.Page.LoadPageStateFromPersistenceMedium() +11043464 
    System.Web.UI.Page.LoadAllState() +46 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +11038983 
    System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +11038522 
    System.Web.UI.Page.ProcessRequest() +91 
    System.Web.UI.Page.ProcessRequest(HttpContext context) +240 
    ASP.login_aspx.ProcessRequest(HttpContext context) in c:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\root\9ec5a6be\294c12de\App_Web_ptjxac-a.1.cs:0 
    System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +599 
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +171 

我已經試圖把這個在web.config:

<pages validateRequest="false" enableEventValidation="false" viewStateEncryptionMode ="Never"> 
+0

您是否正在運行網絡農場? – Steven 2011-04-13 10:20:13

+1

非常奇怪,我也有類似的問題3天,現在我解決了它。 1.我已使表單認證和有SSL假 <形式defaultUrl = 「〜/」 loginUrl = 「〜/帳戶/的Login.aspx」 requireSSL = 「假」 超時= 「2880」/> 2。但在我的httpcookies標籤中,我有requireSSL = true。由於在Site.Master.cs它使用cookie來設置ViewStateUserKey,它有問題 3.因此,我得到的錯誤。 4.我將其修改爲錯誤並重新啓動的Web應用程序,現在它很好。 2015-02-16 08:02:15

回答

11

我問過類似的問題,前一陣子。你有see this post嗎?另一件幫助我解決這個錯誤的方法是設置一個machineKey。看到這個Microsoft Page about the problem and setting a Machine Key

+0

如果您有網上服務器場,則還應該確保站點上的IIS站點ID在服務器之間相匹配。不知何故,這個數字被合併到ViewState的加密中。 – 2014-04-02 19:02:19

8

今天我開始有這個問題。

長話短說 - 我複製了一些表格的代碼從類似的網頁,然後忘記變更表單動作:

<form id="Form1" action="search.aspx" method="post" runat="server"> 

</form> 

上results.aspx的形式應該是:

<form id="Form1" action="results.aspx" method="post" runat="server"> 

</form> 

我會建議任何人檢查這一點,還有任何繼承值之前深入到配置和其他設置。