簡體   English   中英

簡單更新查詢導致 System.ComponentModel.Win32Exception: The wait operation timed out error in C# 和 SQL 服務器

[英]Simple update query caused System.ComponentModel.Win32Exception: The wait operation timed out error in C# and SQL Server

我正在嘗試創建一個忘記密碼頁面,用於驗證用戶的用戶名 email、安全問題和答案,然后再將其發送到新密碼頁面。 下面的代碼是將用戶重定向到新密碼頁面的 onClick。

protected void SubmitButton_Click(object sender, EventArgs e)
{
        string email = Email.Text;
        string user = UserName.Text;
        string question = Question.Text;
        string answer = Answer.Text;

        string strCon = ConfigurationManager.ConnectionStrings["WebConfigConString"].ConnectionString;

        SqlConnection con = new SqlConnection(strCon);
        con.Open();

        string strCheck = "SELECT * FROM ACCOUNT WHERE ID = @id AND EMAIL = @email AND SECURITYQUESTION = @question AND SECURITYANSWER = @answer";
        SqlCommand cmdCheck = new SqlCommand(strCheck, con);

        cmdCheck.Parameters.AddWithValue("@id", user);
        cmdCheck.Parameters.AddWithValue("@question", question);
        cmdCheck.Parameters.AddWithValue("@email", email);
        cmdCheck.Parameters.AddWithValue("@answer", answer);

        SqlDataReader dtrCheck = cmdCheck.ExecuteReader();

        if (dtrCheck.HasRows)
        {
            Response.Redirect("newPassword.aspx?id=" + user);
        } 
        else
        {
            ErrorMsg.Text = "Invalid username or email / question and answer does not match!";
        }
}

下面這段代碼是newPassword的aspx頁面的表單段。

<form runat="server">
     <div class="form-group">
         <asp:Label ID="PasswordLabel" runat="server" AssociatedControlID="Password">
         Password:</asp:Label>

         <asp:TextBox class="form-control form-control-user" ID="Password" runat="server" TextMode="Password"></asp:TextBox>
         <asp:RequiredFieldValidator ID="PasswordRequired" runat="server" ControlToValidate="Password"
              ErrorMessage="Password is required." ForeColor="Red">*</asp:RequiredFieldValidator>
     </div>
     <div class="form-group">
         <asp:Label ID="ConfirmPasswordLabel" runat="server" AssociatedControlID="ConfirmPassword">
                    Confirm Password:</asp:Label>
         <asp:TextBox class="form-control form-control-user" ID="ConfirmPassword" runat="server" TextMode="Password"></asp:TextBox>
         <asp:RequiredFieldValidator ID="ConfirmPasswordRequired" runat="server" ControlToValidate="ConfirmPassword"
              ErrorMessage="Confirm Password is required." ForeColor="Red">*</asp:RequiredFieldValidator>
         <asp:CompareValidator ID="PasswordCompare" runat="server" ControlToCompare="Password"
                                            ControlToValidate="ConfirmPassword" ErrorMessage="The Password and Confirmation Password must match." ForeColor="Red">*</asp:CompareValidator>
     </div>

     <asp:ValidationSummary ID="ValidationSummary1" runat="server" ForeColor="Red" />
     <asp:Button ID="SubmitButton" runat="server" Text="Confirm" class="btn btn-primary btn-user btn-block" OnClick="SubmitButton_Click"/>
 </form>

這是新密碼的 onclick onclick后面的代碼:

protected void SubmitButton_Click(object sender, EventArgs e)
{
        string id = Request.QueryString["id"];
        string password = Password.Text;

        string strCon = ConfigurationManager.ConnectionStrings["WebConfigConString"].ConnectionString;

        using (SqlConnection con = new SqlConnection(strCon))
        {
            con.Open();

            string strChange = "UPDATE ACCOUNT SET PASSWORD = @password WHERE ID = @id";

            SqlCommand cmdChange = new SqlCommand(strChange, con);

            cmdChange.Parameters.AddWithValue("@id", id);
            cmdChange.Parameters.AddWithValue("@password", password);

            cmdChange.ExecuteNonQuery();

            con.Close();

            Response.Redirect("login.aspx?msg=Password updated successfully!");
        }
}

但是,每當我在填寫新密碼后單擊提交時,它會凍結很長時間然后顯示此錯誤:

System.ComponentModel.Win32Exception:等待操作超時錯誤

顯然,我忘記在將用戶重定向到 newPassword.aspx 之前關閉連接,只需在重定向對我有用之前添加一個 con.Close() 即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM