为了账号安全,请及时绑定邮箱和手机立即绑定

已经有与此命令关联的打开的DataReader,必须首先关闭-AGAIN

已经有与此命令关联的打开的DataReader,必须首先关闭-AGAIN

C#
MM们 2021-04-09 18:14:00
我有一个运行网站门户的客户端,该门户使用一些旧代码,这些旧代码会定期引起问题。该系统将工作几天甚至几周,然后工作进程将终止并且不再提供任何数据,您必须执行IISRESET才能使其再次工作我发现了很多有关此错误的信息,在我看来,所有解决方案或解释都不适合我的代码。这是导致我的错误的问题方法许多解决方案都指出您不能重新使用连接来执行更新,但是此方法不能。我很确定它是显而易见的,它只是从数据库中获取数据,并且不执行任何更新。除非我别无选择,否则我不想使用MARS。寻找关于我可能错过的事情的指针连接字符串<add name="APP.Properties.Settings.DB" connectionString="server=trs-app;User Id=username;password=xxx;Persist Security Info=False;database=TRailS;Pooling=True" providerName="System.Data.SqlClient"/>OpenConnection方法        //open connection to database    public bool OpenConnection()    {        try        {                            if (DBConnection.State != ConnectionState.Open)            {                while (DBConnection.State == ConnectionState.Connecting)                {                    // Do Nothing                }                DBConnection.Open();                System.Diagnostics.Debug.WriteLine("SQL Connection Opened");            }            return true;        }        catch (SqlException ex)        {            switch (ex.Number)            {                case 0:                    LastError = "Cannot connect to server.  Contact administrator";                    return false;                case 1045:                    LastError = "Invalid username/password, please try again";                    return false;            }            LastError = "Unknown Error : " + ex.Message;            return false;        }    }刚刚在DAL类中发现了这一点-这是原因!!!     private static SqlConnection DBConnection;解决方案可能是从Sqlconnection变量(DBConnection)中删除静态对象,并根据建议在DAL类中实现IDisposable模式    protected virtual void Dispose(bool disposing)    {        if (disposing == true)        {            DBConnection.Close(); // call close here to close connection        }    }    ~MSSQLConnector()    {        Dispose(false);    }
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 137 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信