带有runat=服务器错误的ASP.net post:视图状态MAC验证失败



你好,我有以下代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head>
  <title></title></head><body><form method="POST" action="search.aspx" runat="server">     Name <input type="text" name="Name"/>Age <input type="text" name="Age"/><input type="submit" /></form></body></html>
这是一个简单的asp.net表单,包含两个字段name和age以及一个submit按钮。但是当我点击提交按钮时,我收到以下错误:

视图状态MAC验证失败。如果此应用程序由Web Farm或集群托管,请确保配置指定相同的validationKey和验证算法。不能在集群中使用"自动生成"。描述:在执行当前web请求期间发生了未处理的异常。请查看堆栈跟踪以获得有关错误及其在代码中的起源的更多信息。

异常详细信息:System.Web.HttpException: Validation of viewstate MAC failed。如果此应用程序由Web Farm或集群托管,请确保配置指定相同的validationKey和验证算法。AutoGenerate不能在集群中使用。

如果从表单中删除runat=server,这个错误就会消失。不幸的是,我有一个下拉列表,从数据库与runat=服务器在表单标签填充。任何想法为什么我不能张贴使用runat=服务器?我将在下拉列表中使用的代码如下:

<label>Location</label> <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
    ConnectionString="<%$ ConnectionStrings:web3ConnectionString1 %>" 
    SelectCommand="SELECT DISTINCT location FROM properties"></asp:SqlDataSource>

            <asp:DropDownList id="location" runat="server" DataSourceID="SqlDataSource2" DataTextField="location" DataValueField="location" >

            </asp:DropDownList>

,但在此之前,简单的表单需要开始张贴值。

问候,Sohail .

您的表单标签格式不正确。它应该看起来更像:

<form id="MyForm" runat="server">

它不应该指定方法或操作。这些规范可能会破坏您的视图状态或以某种方式改变MAC。

如果此应用程序不在web farm上运行,请尝试在web.config中将enableViewStateMac键设置为false:

<pages enableViewStateMac="false">

最新更新