Asp.net 升级方法仅在azure中为分布式事务返回了无效值

Asp.net 升级方法仅在azure中为分布式事务返回了无效值,asp.net,linq,sql-server-2008,azure-web-app-service,Asp.net,Linq,Sql Server 2008,Azure Web App Service,我正在使用Azure Web App托管该网站 在azure虚拟机上使用vb.net和sql server使用asp.net 一个奇怪的错误“升级方法为分布式事务返回了一个无效的值”,并且web上的信息非常少 我正在事务范围中使用它 其中,main方法调用MethodA和MethodB封装在transactionscope中,每个方法分别使用transactionscope 我没有在本地运行错误 我仅在Azure Web App服务中收到此错误 欢迎提出任何建议 该错误表示您的事务正在升级为分布

我正在使用Azure Web App托管该网站

在azure虚拟机上使用vb.net和sql server使用asp.net

一个奇怪的错误“升级方法为分布式事务返回了一个无效的值”,并且web上的信息非常少

我正在事务范围中使用它

其中,main方法调用MethodAMethodB封装在transactionscope中,每个方法分别使用transactionscope

我没有在本地运行错误

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


欢迎提出任何建议

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

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

也看看这些