【发布时间】:2023-04-04 21:19:02
【问题描述】:
我们一直在尝试在TransactionScope 中使用SqlConnection。当我们构建站点并尝试这个数据库调用时,我们遇到了一个错误:
从服务器接收结果时发生传输级错误。 (提供者:TCP Provider,错误:0 - 现有连接被远程主机强行关闭。)
所涉及的错误发生在cnn.Open()这一行。
using (var scope = new TransactionScope())
using (var cnn = new SqlConnection(connectionString))
{
cnn.Open();
int result = cnn.QuerySingle<int>("SELECT 1");
Console.WriteLine(result);
}
我们创建了一个控制台应用程序来找出问题所在,并发现通过将连接字符串关键字“Pooling”从“false”更改为“true”,它可以在控制台应用程序中运行并成功返回我们的结果。
我们对站点连接字符串进行了相同的更改,返回的错误与之前相同。
这段代码不工作有什么原因吗?
【问题讨论】:
-
首先,为什么要关闭池?其次,这听起来像是池化导致相同的物理连接被重用于多个逻辑连接。这是不确定的,可以随时中断。发布更完整的代码。可能有多个查询或多个 Open。
-
Azure 门户提供给我们的连接字符串中的池已关闭。我们尝试打开它,它在我的本地机器上工作,但在部署到我们的网络应用程序时却不行。当有一个或多个查询或连接时没有区别,它在第一次打开时失败
标签: azure ado.net transactionscope sqlconnection