2017-06-13 16 views
1

ユーザーがパスワードをリセットするオプションを持つ1つのWebアプリケーションを作成しました。彼はパスワードリセットをクリックすると...電子メールがパスワードをリセットするためのリンクを彼に送信されます解決方法:無効なポストバックまたはコールバックの引数

..

リンクをクリックした後、それは、パスワード変更ページになります。 aspx.cs背後

<div id="changePassDiv"> 
<div> 
<asp:TextBox ID="txtNewPassword" TextMode="Password" runat="server" class="form-control input-sm" placeholder="" TabIndex="1"></asp:TextBox> 
</div> 

<div> 
<asp:TextBox ID="txtConfirm" runat="server" class="form-control input-sm" TextMode="Password" placeholder="" TabIndex="1"></asp:TextBox> 
<asp:CompareValidator ID="cmp" runat="server" ControlToValidate="txtConfirm" ControlToCompare="txtNewPassword" ErrorMessage="Password doesn't match!" Display="Dynamic"></asp:CompareValidator> 
</div> 

<div><asp:Button ID="SubmitButton" runat="server" Class="btn btn-default-color btn-sm" Text="Submit" OnClick="SubmitButton_Click" OnClientClick="ga('send', 'event', 'contact', 'Click', 'Submit');" CausesValidation="true" ValidationGroup="DetailsGroup" /></div> 

</div> 

マイコード::私は、ASPXのUIページ内のフィールド、次のしているユーザーは、新しいパスワードを入力 ...

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 = "Password changed successfully!"; 
      InvalidCredentialsMessage.ForeColor = Color.Green; 
      InvalidCredentialsMessage.Font.Size = 12; 
      ScriptManager.RegisterStartupScript(this, GetType(), "Success", "alert('Please enter your Username/Email Id!');", 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 = "Password is not changed please try again!"; 
      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 = "Password should consist of minimum 7 characters with atleast one capital alpahabet, one small alphabet, one special character and one numeric value"; 
     if (ex.Message.ToLower().IndexOf("value cannot be null") != -1) 
      InvalidCredentialsMessage.Text = "you are trying to change another user password!"; 
     InvalidCredentialsMessage.ForeColor = Color.Red; 
     InvalidCredentialsMessage.Font.Size = 9; 
    } 
} 
} 

ときに電子メールからのリセットのリンクをユーザーがクリックしますパスワードウィンドウを変更すると、新しいパスワード&がサブミット時にクリックされると、次のエラーが発生します。

Invalid postback or callback argument. Event validation is enabled using in configuration or <%@ Page EnableEventValidation="true" %> in a page. For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.

説明現在のWeb要求の実行中に、未処理の例外が発生しました。エラーの詳細とコード内のどこで発生したのかについては、スタックトレースを参照してください。

例外の詳細:System.ArgumentException:ポストバックまたはコールバックの引数が無効です。イベントの検証は、in構成または<%@ Page EnableEventValidation = "true"%>を使用して有効になっています。セキュリティ上の理由から、この機能はポストバックまたはコールバックイベントの引数が元々レンダリングされたサーバーコントロールから発生することを確認します。データが有効で予期されている場合は、検証のためにポストバックまたはコールバックデータを登録するためにClientScriptManager.RegisterForEventValidationメソッドを使用します。

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

スタックトレース:

[ArgumentException: Invalid postback or callback argument. Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page. For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.] 
    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 

Note: i have tried adding <%@ Page EnableEventValidation="true" %> but it didn't workde

答えて

0

これが重複問題であり、あなたは以下のあなたの答えを見つけることができます。以下のリンクあたりとして

Disable eventvalidation (bad idea, because you lose a little of security that come with very little cost). 
Use ASP.NET Ajax UpdatePanel. (Put the listbox in the Updatepanel and trigger a update, if you add or remove listbox. This way viewstate and related fields get updates and eventvalidation will pass.) 
Forget client-side and use the classic postback and add or remove the listitems server-side. 

:[Invalid postback or callback argument. Event validation is enabled using '<pages enableEventValidation="true"/>'

+0

私はドロップダウンリストを使用していませんここに!私はすでに質問を投稿する前にこのスレッドをrefferredしています。役に立たなかった – ace

関連する問題