连接不会像它应该关闭

Pat*_*uis 2 c# asp.net sqlconnection

我在ASP项目中遇到以下错误:

The connection was not closed. The connection's current state is open
Run Code Online (Sandbox Code Playgroud)

在SqlConnection对象上调用.open()函数时.

我试过这个:

    if (Conn.State != ConnectionState.Closed)
    {
        Log.Message(xxx);
        try
        {
            Conn.Close();
        }
        catch (Exception ex)
        {
            Log.Error(xxxx);
        }
    }
    Conn.Open();
Run Code Online (Sandbox Code Playgroud)

但这仍然会引发错误.Conn对象声明为:

private static readonly SqlConnection Conn = new SqlConnection(xxxx);
Run Code Online (Sandbox Code Playgroud)

知道我应该在哪里寻找解决方案

小智 7

这是模式.

using(var conn = new SqlConnection(connectionString))
using(var cmd = new SqlCommand(someSql, conn)
{
    conn.Open();
    cmd.ExecuteNonQueryOrWhatevs();
}
Run Code Online (Sandbox Code Playgroud)
  1. 创建您的连接
  2. 打开你的连接
  3. 处理你的连接

不要试图重用它.只需获取它,使用它,并尽快处理它.

此外,这些都不是线程安全的,因此不要从不同的线程触及任何上述实例.请使用一个线程来连接.随意使用多个线程来处理结果.