gpt4 book ai didi

c# - 连接未关闭,连接的当前状态为打开

转载 作者:可可西里 更新时间:2023-11-01 09:01:12 25 4
gpt4 key购买 nike

我正在编写 ASP.NET 应用程序。在我的数据层中,查询前后打开和关闭了一个 sql 连接。 SqlConnection 被保存为单个类的私有(private)字段。类中的每个数据库调用都使用相同的结构:

        conn.Open();

try
{
// database querying here
}
finally
{
conn.Close();
}

然而,在极少数情况下,我会收到“连接未关闭”的异常。连接的当前状态是打开的。不可能重现该问题,因为它很少起源于代码的不同部分。我的应用程序中涉及一些线程,但新线程也会生成新的数据层类,从而生成新的连接对象。

我不明白如何使用上面的代码让连接在打开时徘徊。连接打开后不应该一直关闭,不可能出现上述异常吗?

最佳答案

很可能在您未处理的 try block 中抛出异常。请参阅 MSDN 中的此注释以获取 try-finally :

Within a handled exception, the associated finally block is guaranteed to be run. However, if the exception is unhandled, execution of the finally block is dependent on how the exception unwind operation is triggered.

无论如何,我建议将连接包装在 using block 中:

using (SqlConnection connection = new SqlConnection(connectionString))
{
//etc...
}

或者,在 try-finally 中添加一个 catch block :

    conn.Open();

try
{

}
catch
{

}
finally
{
conn.Close();
}

关于c# - 连接未关闭,连接的当前状态为打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19089305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com