【发布时间】:2015-04-22 21:57:34
【问题描述】:
所以我在发布到 Azure 应用服务网站的 WebAPI 控制器中有以下简单代码。
using (var tx = new TransactionScope())
{
var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["OrganizationManagement"].ConnectionString);
connection.Open();
return Enumerable.Empty<TimeSessionDTO>();
}
100% 的情况下,这会在 Open 调用中给我一个传输错误异常:
从 服务器。 (提供者:TCP 提供者,错误:0 - 现有连接是 被远程主机强行关闭。)
我已经尝试使用指数重试策略从瞬态故障处理 EL 块中使用 ReliablSqlConnection,但我最终会遇到事务超时。
如果我删除周围的 TransactionScope,它会起作用并且不会引发异常。
如果我在本地机器上运行相同的代码,并且连接字符串仍然指向 SQL Azure 数据库,那么它可以与 TransactionScope 一起正常工作。
我无法在 Azure 网站的事务中打开数据库连接是怎么回事?
更新:我还应该注意,在 TransactionScope 内使用实体框架 DbContext 工作正常。出于某种原因,它只是在普通的 ADO.NET 上令人窒息。
仅供参考,我还在 Azure 上的新 MVC 应用程序上进行了尝试,结果相同。我只是不明白:)
【问题讨论】:
-
实际上这也不再适用于实体框架。我真的不明白:)
标签: c# azure azure-sql-database transactionscope azure-web-app-service