如何解决:无效的回传或回调参数。

10 浏览
0 Comments

如何解决:无效的回传或回调参数。

我创建了一个网页应用程序,用户可以选择重置他/她的密码。\n当用户点击重置密码时,系统会发送一封带有重置密码链接的电子邮件。\n点击链接后,会跳转到修改密码页面,\n用户在此页面输入新密码。\n我在aspx UI页面中有以下字段:\n\n\n\n\n\n\n我的aspx.cs代码后台:\n

public partial class reset : System.Web.UI.Page
{
string userName = ""; string useremail = "";
protected void Page_Load(object sender, EventArgs e)
{
    if (Request["email"] != "" && Request["email"] != null)
    {
        useremail = Server.UrlDecode(DLSecurity.DecryptString(Request.QueryString["email"].ToString()));
    }
    if (!Page.IsPostBack)
    {
    }
}
protected void SubmitButton_Click(object sender, EventArgs e)
{
    try
    {
        if (useremail == "")
        {
            return;
        }
        userName = Membership.GetUserNameByEmail(DLSecurity.EncryptString(useremail));
        MembershipUser mu = Membership.GetUser(userName);
        string password = mu.ResetPassword();
        if (mu.ChangePassword(password, txtNewPassword.Text))
        {
            InvalidCredentialsMessage.Text = "密码更改成功!";
            InvalidCredentialsMessage.ForeColor = Color.Green;
            InvalidCredentialsMessage.Font.Size = 12;
            ScriptManager.RegisterStartupScript(this, GetType(), "Success", "alert('请输入您的用户名/电子邮件地址!');", true);
            //ClientScript.RegisterStartupScript(this.GetType(), "redirect user to homepage", "alert('password changed successfully. you are being redirected to homepage.');window.location.href='/homepage';", true);
        }
        else
        {
            InvalidCredentialsMessage.Text = "密码未更改,请重试!";
            InvalidCredentialsMessage.ForeColor = Color.Red;
            InvalidCredentialsMessage.Font.Size = 12;
        }
    }
    catch (Exception ex)
    {
        InvalidCredentialsMessage.Text = ex.Message;
        if (ex.Message.ToLower().IndexOf("non alpha numeric characters") != -1)
            InvalidCredentialsMessage.Text = "密码应至少包含7个字符,包括至少一个大写字母、一个小写字母、一个特殊字符和一个数字";
        if (ex.Message.ToLower().IndexOf("value cannot be null") != -1)
            InvalidCredentialsMessage.Text = "您正尝试更改其他用户的密码!";
        InvalidCredentialsMessage.ForeColor = Color.Red;
        InvalidCredentialsMessage.Font.Size = 9;
    }
}
}

\n当用户从电子邮件中的重置链接点击重置链接时,它会转到修改密码窗口,当用户填写新密码并点击提交时,会出现以下错误:\n

\n无效的回发或回调参数。事件验证使用配置中的< pages enableEventValidation=\"true\"/>或页面中的<%@ Page EnableEventValidation=\"true\" %>启用。出于安全考虑,此功能验证回发或回调事件的参数是否来自最初呈现它们的服务器控件。如果数据有效且符合预期,请使用ClientScriptManager.RegisterForEventValidation方法注册回发或回调数据以进行验证。\n

\n描述:当前网页执行期间发生了一个未处理的异常。请查看堆栈跟踪以获取有关错误的更多信息以及错误的来源和位置。\n异常详细信息:System.ArgumentException: 无效的回发或回调参数。事件验证使用配置中的< pages enableEventValidation=\"true\"/>或页面中的<%@ Page EnableEventValidation=\"true\" %>启用。出于安全考虑,此功能验证回发或回调事件的参数是否来自最初呈现它们的服务器控件。如果数据有效且符合预期,请使用ClientScriptManager.RegisterForEventValidation方法注册回发或回调数据以进行验证。\n

\n源错误:\n在当前网页请求的执行期间生成了一个未处理的异常。可以使用异常堆栈跟踪来识别异常的来源和位置。\n

\n堆栈跟踪:\n

[ArgumentException: 无效的回发或回调参数。事件验证使用< pages enableEventValidation="true"/>或页面中的<%@ Page EnableEventValidation="true" %>启用。出于安全考虑,此功能验证回发或回调事件的参数是否来自最初呈现它们的服务器控件。如果数据有效且符合预期,请使用ClientScriptManager.RegisterForEventValidation方法注册回发或回调数据以进行验证。]
   System.Web.UI.ClientScriptManager.ValidateEvent(String uniqueId, String argument) +11859663
   System.Web.UI.Control.ValidateEvent(String uniqueID, String eventArgument) +143
   System.Web.UI.WebControls.HiddenField.LoadPostData(String postDataKey, NameValueCollection postCollection) +54
   System.Web.UI.Page.ProcessPostData(NameValueCollection postData, Boolean fBeforeLoad) +580
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +931

\n

\n注意:我已尝试添加<%@ Page EnableEventValidation=\"true\" %>,但没有起作用。

0