c#表单提交视图状态错误

c#表单提交视图状态错误,c#,webforms,viewstate,C#,Webforms,Viewstate,我试图在C#中设置一个登录功能,我在default.aspx上有一个表单,它发布到login.aspx,逻辑运行在那里 但是当表单发布到Login.aspx时,我得到一个MAC viewstate验证错误。这是什么?为什么 当我从浏览器直接调用Login.aspx时,我没有收到任何错误,只有当表单将自己发布到它时 Default.aspx表单代码: <form id="form1" runat="server" method="post" action="Login.aspx"&g

我试图在C#中设置一个登录功能,我在default.aspx上有一个表单,它发布到login.aspx,逻辑运行在那里

但是当表单发布到Login.aspx时,我得到一个MAC viewstate验证错误。这是什么?为什么

当我从浏览器直接调用Login.aspx时,我没有收到任何错误,只有当表单将自己发布到它时

Default.aspx表单代码:

    <form id="form1" runat="server" method="post" action="Login.aspx">
<div>
  <input type="text" name="lgn" id="lgn" runat="server" /> Login<br />
  <input type="password" name="pwd" id="pwd" runat="server" /> Password<br /><br />
  <input type="submit" name="submit" id="submit" value="Login" runat="server" />

</div>
</form>

登录
密码

将表单发布到同一项目中的另一页是否有任何限制,或者是否有我错过的任何设置

提前谢谢 我通过在asp:按钮上使用PostBackURL属性而不是表单tagg上的action属性解决了这个问题,如下所示:

<asp:Button id="btnSubmit" runat="server" text="login" PostBackUrl="~/Login.aspx" />


这些表单通常的工作方式是发回自己(然后可能重定向到另一个页面)。

如果前面有多个带负载平衡路由器的Web服务器,则可能会发生这种情况。我写了一篇关于这个的博客文章。基本上,您必须将machineKey设置添加到web.config中,指定验证和解密密钥。这将确保它在所有机器上都是相同的。如果未指定,它将自动生成。

我想您应该使用以下命令

<asp:Button ID="btnClickie" Text="Click Me" runat="server" PostBackUrl="~/Login.aspx" />

有一篇关于ViewState的文章,但它没有解决这个问题的确凿证据。

您能将“HttpException(0x80004005)”后的消息翻译成英语吗?MAC ViewState验证失败。如果应用程序位于Web组或群集中,请确保配置指定了相同的validationKey和验证算法。无法在群集中使用自动生成。
<%@ PreviousPageType VirtualPath="~/Page1.aspx" %>