视图状态 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,只是为了看看它们是否有效。

考虑到与我们所做的许多其他事情相比,标志审查行动是如此简单,我很茫然。任何帮助将不胜感激。

视图状态 MAC 验证失败.- 不在网络场上,发生在按钮单击上

我曾经遇到过类似的问题,最终是因为我的表单标签上有一个操作属性。 检查您是否有一个,如果有,请将其删除。

我在评论中问你使用的是哪个版本的框架。 原因是已经做了许多补丁来缓解此问题。

请参阅 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/

服务器传输本身可能导致此问题。 查看该知识库以获取信息,了解它是否适用以及如何绕过它。