【发布时间】:2014-10-17 18:36:59
【问题描述】:
当我运行这个时:
using(SqlConnection connection = new SqlConnection(connectionString)){
await connection.OpenAsync();
}
它挂在connection.OpenAsync() 线上。
如果我在 Sql Server Management Studio 中查看数据库有多少活动连接,那么只有一个:可能是这段代码使用的那个。所以,我不确定是不是我的应用程序池中的连接用完了。
我做错了什么?
【问题讨论】:
-
我猜你的连接字符串是错误的。
-
你等了多久?
-
1) 如果你做一个正常的打开它是否有效? 2) 如果你把它放在
using语句之前,它会锁定在await Task.Delay(1000);上吗?如果两个问题都是肯定的,那么您的问题与 SQL 无关,您的真正问题在 stackoverflow.com/questions/14485115/… 中进行了解释 -
@ScottChamberlain 啊,就是这样。 async/await 功能非常好,但很容易让自己陷入困境。
-
它也不承认取消令牌。我设置了取消令牌,但如果无法建立连接,它仍会设置在那里并超时,而不是在设置取消令牌时立即返回。完全没用。此外,我调用 OpenAsync 的唯一原因是利用取消令牌——只是发现它根本不起作用——因为没有异步版本的 Database.BeginTransaction。真是一堆半途而废的工作。
标签: sql-server ado.net