我有一个名为Redirect.aspx的示例页面,其中包含以下内容;
<body onload="document.forms.container.submit()">
<form id="container" runat="server" method="post" name="container">
<input type="hidden" value="<%=Request["APP_ID"]%>" name="APP_ID" />
</form>
</body>
Page_Load
方法如下:
protected void Page_Load(object sender, EventArgs e)
{
container.Action = Configuration.Instance.PageToRedirect;
}
对于此Redirect.aspx页面,我是从某个外部页面引导的。在请求上下文中,我有APP_ID密钥,它从此外部页面传递。接下来,我想使用POST将此APP_ID值传递给配置中定义的其他页面。不幸的是,我在重定向时遇到了这样的错误:
viewstate MAC验证失败。如果 此应用程序由Web托管 农场或集群,确保 配置指定 相同的validationKey和验证 算法。无法使用AutoGenerate 在群集中。
我不想禁用视图状态验证(<pages enableViewStateMac="false">
),因为这不是我想要应用的“解决方案”。
此外我不明白为什么我会收到这样的错误。有人能帮我解决这个问题吗?还有其他方法可以在Page_Load
事件中自动提交表单吗?
此致
答案 0 :(得分:1)
2个想法:
检查&lt;%= Request [“APP_ID”]%&gt;的值得到实际计算,你不是将其作为字符串发布。你不能发布像“&lt;”这样的任何html标签字符或“&gt;”。如果未计算该值,则表示您没有对页面进行数据绑定。一个快速的解决方案是将this.DataBind()放在代码后面的文件中。
在web.config中手动生成MachineKey(您可以使用在线工具执行此操作:http://aspnetresources.com/tools/machineKey)。在我的一个应用程序中它解决了我的问题,即使我不在网络农场(现在我不记得问题的细节)。
另外请澄清一下: “接下来,我想使用POST将此APP_ID值传递给其他页面,该页面在配置中定义” 你确定当你进行重定向时会发生错误,或者是否在这篇文章中?您是否尝试将值过帐到另一个域中的另一个应用程序?这通常是不可能的。
答案 1 :(得分:0)
我认为,您可以使用以下命令编辑web.config中的页面标记:
<pages maxPageStateFieldLength="512">
也许,它可以解决你的问题......