在TransactionScope内部打开SqlConnection错误

时间:2016-10-05 03:08:34

标签: azure ado.net transactionscope sqlconnection

我们一直试图在SqlConnection内使用TransactionScope。当我们构建站点并尝试此数据库调用时,我们遇到错误:

  

从服务器接收结果时发生传输级错误。 (提供者:TCP提供者,错误: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”,可以在控制台应用程序中运行并成功返回结果。

我们对网站连接字符串进行了相同的更改,与之前返回的错误相同。

这段代码有效吗?

1 个答案:

答案 0 :(得分:0)

我假设web.config是法律,因为通过Kudu服务查看文件显示了我预期的连接字符串,但显然在Azure中不是这样。

我发现Azure发布配置文件覆盖了我们的web.config连接字符串,此覆盖仍包含'Pooling = false'。

现在删除它可以让我们的代码按预期运行。

This blog post解释更多:

  

“当此代码在开发人员的本地计算机上运行时,返回的值将是web.config文件中的值。但是,当此代码在Windows Azure网站中运行时,将返回返回的值,并输入值在门户网站“