驗證視圖狀態(tài) MAC 失敗。如果此應(yīng)用程序由網(wǎng)絡(luò)場或群集承載,請確保 <machineKey> 配置指定了相同的 validationKey 和驗證算法。不能在群集中使用 AutoGenerate。運(yùn)行時提示錯誤: 驗證視圖狀態(tài) MAC 失敗。如果此應(yīng)用程序由網(wǎng)絡(luò)場或群集承載,請確保 <machineKey> 配置指定了相同的 validationKey 和驗證算法。不能在群集中使用 AutoGenerate。 StackTrace: 在 System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) 在 System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) 在 System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize(String serializedState) 在 System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState) 在 System.Web.UI.HiddenFieldPageStatePersister.Load() 在 System.Web.UI.Page.LoadPageStateFromPersistenceMedium() 在 System.Web.UI.Page.LoadAllState() 在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 在 System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 在 System.Web.UI.Page.ProcessRequest() 在 System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) 在 System.Web.UI.Page.ProcessRequest(HttpContext context) 在 ASP.pcpf_login_login_aspx.ProcessRequest(HttpContext context) 位置 d:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\famsweb\d5e90b06\537ccf9e\App_Web_login.aspx.d2f46862.6plrloiq.0.cs:行號 0 在 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
出現(xiàn)問題原因:自己還是不是很清楚,應(yīng)該是在本機(jī)同是使用虛擬主機(jī)訪問造成的問題 解決方案: 在web.config里配置 <pages enableViewStateMac="false"></pages> 添加到<system.web>配置節(jié)。 這種方法自己試驗過,可以
還有人說:(這種方法沒試,不知道可不可以) 查下MSDN就明白了,validationKey和decryptionKey的默認(rèn)值是AutoGenerate,由系統(tǒng)隨機(jī)生成密鑰,如果在本地或者使用的是獨(dú)立主機(jī)通常不會有什么問題,但是使用虛擬主機(jī),一臺服務(wù)器上有多個虛擬主機(jī)存在時就會出現(xiàn)以上問題,MSDN中也特別指出不能在群集中使用 AutoGenerate應(yīng)該指定固定的密鑰值,至此真相水落石出,立刻在web.config中添加關(guān)于machineKey的配置項,并手動設(shè)置其中的密鑰值,這里請注意,不同加密算法對于密鑰的最大字符長度是不同的,在這里能夠使用的有AES,DES,3DES,SHA1,MD5,我只知道DES的密鑰字符長度為16,3DES長度為48,手動設(shè)置時密鑰長度必須等于其最大長度,否則會出錯!至于密鑰的16進(jìn)制值可以隨便輸入。 參考的matchineKey配置: <system.web> <machineKey validation="3DES" validationKey="319B474B1D2B7A87C996B280450BB36506A95AEDF9B51211" decryptionKey="280450BB36319B474C996B506A95AEDF9B51211B1D2B7A87" decryption="3DES"/> 加密位md5,32位時<machineKey validationKey="C3DD5E21134BDCAF7D951A2ED8E45F7E7395A8CEBAA6A43A8D8528A85B9AB00D" decryptionKey="ADCBCFC864936D0248917F2CF276E6F392F5A202F1DB53D9" validation="MD5" /> </system.web> |
|