连接未关闭。连接的当前状态是打开

The connection was not closed. The connection's current state is Open

我遇到了这个错误。我读过一些帖子说要使用 Using 块,但我有一个,但我仍然遇到错误。

我的代码隐藏是:

    protected void btnEdit_OnClick(object sender, EventArgs e)
    {
        MdlCommentsExtender.Enabled = true;
        MdlCommentsExtender.Show();
        Button button = (Button)sender;
        string buttonId = button.ID;
        string[] tokens = buttonId.Split('-');
        ScriptManager.GetCurrent(this).SetFocus(this.txtCommentBox);

        //**************************/
         try
         {

             using (SqlConnection conn = new SqlConnection())
             {
                 conn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnCST"].ToString();
                 conn.Open();
                 SqlCommand cmd2 = new SqlCommand();
                 cmd2.Connection = conn;
                 string CmdTxt = "Select CBL.ID, CBL.[Category], CBL.[Provision], CTL.MarkForReview, CTL.IssueType, CTL.Resolution, CTL.Feedback, CTL.TemplateID";
                 CmdTxt = CmdTxt + " from [tblCSTBenefitList] CBL";
                 CmdTxt = CmdTxt + " LEFT JOIN tblCSTTemplateList CTL";
                 CmdTxt = CmdTxt + " ON CBL.ID = CTL.BenefitID";
                 CmdTxt = CmdTxt + " where CBL.ID > '0'";
                 CmdTxt = CmdTxt + " ORDER BY CBL.[Category], CBL.[Provision] ASC";

                 cmd2.CommandText = CmdTxt;
                 SqlDataReader reader;
                 conn.Open();
                 reader = cmd2.ExecuteReader();
                 reader.Read();

                 lblBenCatX.Text = Convert.ToString(reader["Category"]);
                 lblBenProvX.Text = Convert.ToString(reader["Provision"]);
                 txtCommentBox.Text = Convert.ToString(reader["Feedback"]);
             }
         }
         catch (Exception ex) 
         { 
             Response.Write(ex.Message); 
         }

        /*******************************************/

        //txtCommentBox.Text = "First: " + tokens[0] + " and then " + tokens[1] + "";
    }

它发生在 conn.Open(); 线上。有什么想法吗?

您正在尝试打开连接两次,您的方法中有 conn.Open() 次,但您较新的是在尝试 "re-open" 之前关闭连接。

您确定要打开连接两次吗?尝试删除第二个 conn.Open(),它应该确实有效。