我使用Azure Web App来托管网站
使用vb.net使用的asp.net和托管在azure vm上的sql server
一个奇怪的错误“提升方法为分布式事务返回了无效值”,而在网络上提供的信息很少。
我在交易范围
中使用它其中 MainMethod 调用 MethodA & MethodB 包含在 transactionscope 中,每种方法都会进一步单独使用 transactionscope 。
我不会在本地运行错误。
我仅在Azure Web App服务中收到此错误。
欢迎任何建议。
答案 0 :(得分:5)
该错误表示您的交易正在 提升 到达分布式交易。分布式事务依赖于 MSDTC ,它在内部使用 DCOM 协议,而DCOM在Azure Webapps中不起作用。如果在同一TransactionScope中打开多个连接(Connection.open),LTM(轻量级事务)将被提升为分布式事务。
您可以确保在transactioncope中只打开一个sqlconnection,或者尝试更改代码以使用SqlTransactions而不是TransactionScope或分布式事务。在一些文章中还提到,如果在连接字符串中使用ENLIST=FALSE
,那么升级到MSDTC不会发生,但如果在同一事务范围内打开多个连接,则不确定这是否是可行的解决方案。
同时检查这些