微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WCF MSDTC事务已提升,但未执行

如何解决WCF MSDTC事务已提升,但未执行

| 我不是WCF和MSDTC的专家,所以希望这很简单。我有一个客户端服务器,一个Web服务服务器和一个数据库。我希望能够将对包装到Web服务服务器的调用包装在TransactionScope中,以便如果操作中出现故障,我可以退出。当所有3个组件都位于我的本地计算机上时,此设置可以正常工作。当我将它们移到单独的服务器上时,一切正常,直到调用在TransactionScope之内。 我可以在dcomcnfg->组件服务->计算机->我的电脑->分布式事务处理协调器->本地DTC下看到在客户端和Web服务服务器上都添加了事务。我看到相同的事务显示在两台计算机上。问题是,它只是等待超时而失败。如果我查看我的事务日志中应该进行的Web服务调用是在TransactionScope内进行的,则它们不存在。 我想念什么?     

解决方法

我不建议跨WCF服务边界使用TransactionScope,但是如果您必须阅读以下内容: http://www.stevefenton.co.uk/Content/Blog/Date/200911/Blog/TransactionScope-and-WCF-Services/     ,我最近在用MSDTC配置NServiceBus和NHibernate时看到了类似的症状。 我的问题的解决方案涉及检查所使用的身份验证。 在分布式事务处理协调器的本地DTC中,转到属性并检查“安全性”选项卡。可能是您需要启用网络DTC访问或更改所使用的身份验证。尝试不进行身份验证以查看是否可行,然后根据需要进行锁定。     ,在这种情况下,它最终成为防火墙问题。我推迟了它是防火墙问题的想法,因为我看到事务出现在服务服务器事务列表中,但是将分布式事务处理协调器添加到防火墙中域通信的允许列表中解决了该问题。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。