按钮单击事件验证Anti-XSRF令牌失败

时间:2014-10-14 12:02:55

标签: c# asp.net webforms

我发现有很多关于此错误的问题,但我无法理解在我的特定情况下发生了什么。我不完全确定,因为我主要使用jQuery Ajax电话来构建此应用程序,但我认为我之前没有收到此错误,但这并非100%肯定

但是,我的设置是这样的 - 我有一个Default.aspx页面,我刚刚添加了这个按钮:

<asp:Button ID="btnLogin" Runat=server Text="Login" OnClick="Login_Click"></asp:Button><br>

在我的代码后面我有:

    protected void Login_Click(object sender, EventArgs e)
    {

我在这个事件处理程序的最开头有断点但是当我按下按钮时我从来没有使用过这个方法,而是在Site.Master.cs中:

        protected void master_Page_PreLoad(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                // Set Anti-XSRF token
                ViewState[AntiXsrfTokenKey] = Page.ViewStateUserKey;
                ViewState[AntiXsrfUserNameKey] = Context.User.Identity.Name ?? String.Empty;
            }
            else
            {
                // Validate the Anti-XSRF token
                if ((string)ViewState[AntiXsrfTokenKey] != _antiXsrfTokenValue
                    || (string)ViewState[AntiXsrfUserNameKey] != (Context.User.Identity.Name ?? String.Empty))
                {
                    throw new InvalidOperationException("Validation of Anti-XSRF token failed.");
                }
            }
        }

我在上述方法中遇到了错误 - Validation of Anti-XSRF token failed

令我感到困惑的是 - 我怀疑,我在开始时没有得到这个错误,其次,这段代码尽可能微不足道,没有什么我无法添加到我的代码,只是更基本的 - button - event handler设置,你可以得到。

P.S

这是我.aspx页面的顶部:

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" 

CodeBehind="Default.aspx.cs" Inherits="WebFormsApp.Clients.Default" %>

0 个答案:

没有答案