Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# viewstate MAC验证失败。-不是在web场上,而是在单击按钮时发生_C#_Asp.net - Fatal编程技术网

C# viewstate MAC验证失败。-不是在web场上,而是在单击按钮时发生

C# viewstate MAC验证失败。-不是在web场上,而是在单击按钮时发生,c#,asp.net,C#,Asp.net,我看到这个问题被问了很多次,但我看到的问题或答案似乎都没有解决我的问题。正如标题所示,我得到了Viewstate错误的有趣验证 我公司的网站托管在Amazon EC2上,因此据我所知,它不是一个web服务器场,因为这是唯一出现问题的页面 我们有一个简单的评论页面,页面上的所有元素都很棒,包括留下新评论。但是,单击“flag review”按钮时会生成viewstate错误 单击按钮时运行的实际代码如下所示: protected void btnFlagReview_Click(object se

我看到这个问题被问了很多次,但我看到的问题或答案似乎都没有解决我的问题。正如标题所示,我得到了Viewstate错误的有趣验证

我公司的网站托管在Amazon EC2上,因此据我所知,它不是一个web服务器场,因为这是唯一出现问题的页面

我们有一个简单的评论页面,页面上的所有元素都很棒,包括留下新评论。但是,单击“flag review”按钮时会生成viewstate错误

单击按钮时运行的实际代码如下所示:

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>
protectedvoid btnFlagReview\u单击(对象发送方,事件参数e)
{
尝试
{
LinkButton btn=(LinkButton)发送方;
intid=Int32.Parse(btn.Attributes[“rid”]);
证明文件。更新数量(错误,id);
MailMessage mail=新的MailMessage();
mail.To.Add(“oursupport@emailaddress.com");
mail.From=新邮件地址(“ourwebmaster@emailaddress.com");
mail.Subject=“审查已被标记为审核”;
弦体=
“已将用户评论标记为审核。请在“管理”面板中批准/删除此评论。”;
mail.Body=Body;
SmtpClient smtp=新SmtpClient();
尝试
{
smtp.发送(邮件);
}
捕获(SMTPEx异常)
{
if(ex.StatusCode==SmtpStatusCode.存储不足)
smtp.Send(mail);//再次发送以确保发送此电子邮件
}
string script=“警报('此审查已被标记为审核')”;
类型t=类型(字符串);
RegisterStartupScript(t,“Script”,Script);
}
捕获(异常ee){
businessName.Text=ee.ToString();
}
}
实际按钮的代码如下所示:

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,看看它们是否有效


考虑到国旗审查行动与我们做的许多其他事情相比是如此简单,我感到不知所措。任何帮助都将不胜感激。

我在评论中询问了您使用的框架版本。原因是为了缓解这个问题,已经做了很多补丁

其中很多似乎归结为某人单击页面上的按钮或链接而没有完全返回到浏览器。在你的情况下,标题为“flag”的链接很可能是这样的

首先要尝试的是应用所有windows更新。之后,您可能需要执行一些操作,例如将机器密钥放在web.config文件中,或者创建一个页面基类,该基类将在表单顶部而不是末尾发出相关的隐藏字段

===根据问题评论进行更新===

见:


server.transfer本身可能导致此问题。查看知识库中的信息,看看它是否适用以及如何绕过它。

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

哪个版本的框架?这方面有很多补丁:(有其他信息的同事):此页面url在iis中写入处理重定向的页面
Domain.com/dan/reviews
->
Domain.com/profile.aspx?user=dan&page=reviews
(c#logic,server.transfer)->
Domain.com/reviews.aspx?user=dan
@Michael Jasper:请看下面的更新我们已经安装了4.0.30319版。您可能为我节省了1000个小时。。。即使在3年之后……)