gpt4 book ai didi

asp.net - 来自 asp.net 应用程序的奇怪的未处理异常 - View 状态 MAC 验证失败

转载 作者:行者123 更新时间:2023-12-04 01:23:37 25 4
gpt4 key购买 nike

我不知道以前是否有人见过这个问题,但我只是被难住了。这是我的错误页面捕获的未处理异常消息。

Error Message: Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.

Stack Trace: at System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) at System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize(String serializedState) at System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState) at System.Web.UI.HiddenFieldPageStatePersister.Load() at System.Web.UI.Page.LoadPageStateFromPersistenceMedium() at System.Web.UI.Page.LoadAllState() at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) at System.Web.UI.Page.ProcessRequest() at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) at System.Web.UI.Page.ProcessRequest(HttpContext context) at ASP.generic_aspx.ProcessRequest(HttpContext context) at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

Source: System.Web



有人对我如何解决这个问题有任何想法吗?谢谢。

最佳答案

我似乎记得如果在页面完全加载之前单击按钮/链接等,可能会发生此错误。

如果是这种情况,则该错误是由称为事件验证的 ASP.net 2.0 功能引起的。这是一项安全功能,可确保回发操作仅来自服务器允许和创建的事件,以帮助防止欺骗回发。此功能是通过让控件在呈现时注册有效事件来实现的(如在其实际的 Render() 方法期间)。最终结果是在渲染的底部
表单标签,你会看到这样的:

<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION"  value="AEBnx7v.........tS" />

发生回发时,ASP.net 使用存储在此隐藏字段中的值来确保您单击的按钮调用有效事件。如果它无效,则会出现您一直看到的异常。

当您在 EventValidation 字段呈现之前回发时,您看到的问题会特别发生。如果启用了 EventValidation(默认情况下是这样),但 ASP.net 在您回发时看不到隐藏字段,您也会收到异常。如果您在表单完全呈现之前提交表单,则 EventValidation 字段可能尚未呈现,因此 ASP.net 无法验证您的点击。

一种解决方法当然是仅禁用事件验证,但您必须了解安全隐患。或者,在表单完成渲染之前永远不要回发。当然,这很难告诉您的用户,但也许您可以在表单呈现之前禁用 UI?

来自 http://forums.asp.net/p/955145/1173230.aspx

关于asp.net - 来自 asp.net 应用程序的奇怪的未处理异常 - View 状态 MAC 验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/121579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com