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

我有一个运行网站门户的客户端,该门户使用一些旧代码,这些旧代码会定期引起问题。该系统将工作几天甚至几周,然后工作进程将终止并且不再提供任何数据,您必须执行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);

    }


MM们
浏览 138回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP