视图状态 MAC 验证失败.- 不在网络场上,发生在按钮单击上
本文关键字:单击 按钮 网络 验证 MAC 失败 视图状态 | 更新日期: 2023-09-27 17:55:30
但我看到的问题或答案似乎都没有解决我的问题。正如标题所暗示的那样,我得到了总是很有趣的视图状态验证错误。
我公司的网站托管在 Amazon EC2 上,因此据我所知,它不是一个网络场,因为这是问题出现的唯一页面。
我们有一个简单的评论页面,它很棒,页面上的所有元素都很好,包括留下新的评论。但是,单击"标记审阅"按钮时会生成视图状态错误。
单击按钮时运行的实际代码如下所示:
protected void btnFlagReview_Click(object sender, EventArgs e)
{
try
{
LinkButton btn = (LinkButton)sender;
int id = Int32.Parse(btn.Attributes["rid"]);
testimonials.updateModerated(false, id);
MailMessage mail = new MailMessage();
mail.To.Add("oursupport@emailaddress.com");
mail.From = new MailAddress("ourwebmaster@emailaddress.com");
mail.Subject = "A review has been flagged for moderation";
string Body =
"A user review has been flagged for moderation. Please Approve/Delete this review in the Admin Panel. ";
mail.Body = Body;
SmtpClient smtp = new SmtpClient();
try
{
smtp.Send(mail);
}
catch (SmtpException ex)
{
if (ex.StatusCode == SmtpStatusCode.InsufficientStorage)
smtp.Send(mail);//Send again to ensure this email gets sent
}
string script = "<SCRIPT type='text/javascript'>alert('This review has been flagged for moderation.')</SCRIPT>";
Type t = typeof(String);
ClientScript.RegisterStartupScript(t, "Script", script);
}
catch(Exception ee) {
businessName.Text = ee.ToString();
}
}
实际按钮的代码如下:
<asp:LinkButton ID="btnFlagReview" OnClick="btnFlagReview_Click" rid='<%# Eval("testimonialID") %>' runat="server">flag</asp:LinkButton>
我什至尝试了我在网络上和这里的其他问题中找到的解决方案,例如更改页面的validateRequest,enableEventValidation和viewStateEncryptionMode,只是为了看看它们是否有效。
考虑到与我们所做的许多其他事情相比,标志审查行动是如此简单,我很茫然。任何帮助将不胜感激。
我曾经遇到过类似的问题,最终是因为我的表单标签上有一个操作属性。 检查您是否有一个,如果有,请将其删除。
我在评论中问你使用的是哪个版本的框架。 原因是已经做了许多补丁来缓解此问题。
请参阅 http://blogs.msdn.com/b/tom/archive/2008/03/14/validation-of-viewstate-mac-failed-error.aspx
其中很多似乎归结为某人单击页面上的按钮或链接,而该按钮或链接并未完全呈现回浏览器。 在您的情况下,标题为"标志"的链接似乎可能...
首先要尝试的是应用所有窗口更新。 之后,您可能需要执行一些操作,例如将计算机密钥放在 web.config 文件中,或者创建一个页面基类,该基类在窗体顶部而不是末尾发出相关的隐藏字段。
===== 根据对问题的评论进行更新 =====
请参阅:http://support.microsoft.com/kb/316920/
服务器传输本身可能导致此问题。 查看该知识库以获取信息,了解它是否适用以及如何绕过它。