4

这是错误

无效的回发或回调参数。使用配置或页面中的 <%@ Page EnableEventValidation="true" %> 启用事件验证。出于安全目的,此功能验证回发或回调事件的参数是否源自最初呈现它们的服务器控件。如果数据有效且符合预期,请使用 ClientScriptManager.RegisterForEventValidation 方法注册回发或回调数据以进行验证。

我也经常得到这些

此页面的状态信息无效,可能已损坏。

我已经阅读了大约 20 个其他“无效回发或回调参数”问题和答案,我认为我的问题不属于任何常见类别:

  • 动态客户端创建或更改 ASP.NET 不知道的控件
  • 用户提交代码或代码位,例如“<”和“>”字符
  • 在每个 Page_Load 事件中绑定数据而不明智地使用 if (!IsPostBack)
  • 错误的 AJAX CascadingDropDown 扩展器
  • 俄罗斯人试图入侵您的网站(!)
  • 拨号用户的间歇性问题 (!)
  • ASP.NET 版本之间的不匹配,例如同时使用 ASP.NET 1.1 和 2.0 的服务器场

我认为我的问题与此列表中的最后一个问题最相似。

在表单回发时,我在我的 2 Microsoft Azure Web 服务器负载平衡测试环境中间歇性地(但经常)遇到错误。

我注意到当其中一个服务器生成的页面被回发到另一个时,就会出现问题。当我取消负载平衡(仅访问一台服务器)时,问题就消失了。

我在一个 Web 服务器上使用 Win Server 2008 R2 (IIS7.5),在另一个 Web 服务器上使用 Win Server 2012 (IIS8)(我对 2008 很熟悉,对 2012 很警惕,但我想学习,所以我选择运行其中一个每个人都可以对冲我的赌注,以防您想知道)。

2008 机器运行 ASP.NET 版本“4.0.30319.272 ,2012 机器运行“4.0.30319.18010 ,但显然 IIS 版本不同。

但它们都在运行 ASP.NET 4.0。.NET 应该使底层操作系统透明,对吗?所以我不太确定这是导致问题的原因。

重新构建一台服务器以使它们相同将是一件苦差事,如果 ASP.NET 的细微差异不是问题的原因,则宁愿避免它!

那么两个服务器在回发时不接受彼此的表单还有其他原因吗?仅供参考,我已经在两台服务器上的 web.config 中添加了一个条目,以修复我遇到的“视图状态 MAC 验证失败”错误。

或者我可以做任何配置更改以使服务器更兼容?

谢谢!

4

3 回答 3

3

所以我花了半天的时间重新构建我的网络“农场”并让两台服务器都是 2008R2,问题就消失了!

我的(暂定)结论是,服务器 2008R2 与 2012 上的 .NET 4.0.30319... 版本之间的视图状态处理之间的差异(包括完全不同的__EVENTVALIDATION格式)是问题的原因。

我不能确定这一点,因为我设置 2012 服务器的方式可能与 2008R2 服务器不同。但是,在构建 2012 服务器时,我相当严格地遵循了我编写的 2008R2 构建文档,因此,以及我花了 2 天时间修补构建以使其工作,提高了我的信心,我没有错过一些明显的东西。

故事的寓意(大约 80% 的置信度):不要在 ASP.NET 部署中混合服务器版本,即使 .NET 的版本相同。

于 2013-02-13T20:32:32.960 回答
0

我有同样的问题农场系统。我测试了几种解决方案,并且有效的是:

  • 在一个系统上生成 machineKey,然后复制到另一个系统。(我在几个论坛中找到了这个解决方案,但它本身不起作用)
  • 把同类型的兼容性。对我来说,它是“Framework45”。(从此配置开始工作)。

例子:

<system.web>
...
<machineKey compatibilityMode="Framework45" decryptionKey="808A25F38661B8799CFD5B6FC5CF73D2988F5786CE46075D" validationKey="B75D59843CA111DF8596FCF865D9C0459B63B6ED474D4B23FD63A5F3A5AB18560A0D2A162191EC3354650CB37B174DDE187B29D424FC5CF60EFDA567BA64D3A3" />
...
</system.web>
于 2016-11-24T18:57:18.677 回答
-5

尝试在您的页面指令中添加以下内容 -

<%@ Page EnableEventValidation="false" %>
于 2013-02-04T11:01:34.770 回答