promote方法仅在azure中为分布式事务返回了无效值

时间:2015-04-11 06:02:09

标签: asp.net linq sql-server-2008 azure-web-sites

我使用Azure Web App来托管网站

使用vb.net使用的asp.net和托管在azure vm上的sql server

一个奇怪的错误“提升方法为分布式事务返回了无效值”,而在网络上提供的信息很少。

我在交易范围

中使用它

其中 MainMethod 调用 MethodA & MethodB 包含在 transactionscope 中,每种方法都会进一步单独使用 transactionscope

我不会在本地运行错误。

我仅在Azure Web App服务中收到此错误。

欢迎任何建议。

1 个答案:

答案 0 :(得分:5)

该错误表示您的交易正在 提升 到达分布式交易。分布式事务依赖于 MSDTC ,它在内部使用 DCOM 协议,而DCOM在Azure Webapps中不起作用。如果在同一TransactionScope中打开多个连接(Connection.open),LTM(轻量级事务)将被提升为分布式事务。

您可以确保在transactioncope中只打开一个sqlconnection,或者尝试更改代码以使用SqlTransactions而不是TransactionScope或分布式事务。在一些文章中还提到,如果在连接字符串中使用ENLIST=FALSE,那么升级到MSDTC不会发生,但如果在同一事务范围内打开多个连接,则不确定这是否是可行的解决方案。

同时检查这些