使用MSDTC时Windows 2019上的实体框架异常

时间:2019-08-29 15:22:02

标签: entity-framework entity-framework-6 msdtc sqlclient

我们有2台服务器。一个框是运行在Windows Server 2016上的MS SQL Server 2017(14.0.3192.2)。另一个框是运行带有EF 6.2.0的Web服务的Windows Server 2019框。 2019包装盒是新包装,生产Web服务正在Win 2k12 R2服务器上运行,目前没有任何问题。当EF需要在一个呼叫中执行多个事务时,听起来该呼叫已升级为使用MS Distributed Transaction Coordinator。在新的2019服务器上,我们看到这些请求已被中止。我们在代码中看到的异常是“该操作对于征募的当前状态无效”。我已经完成了所有DTC故障排除的工作,但是一切似乎都已经解决了。我们不使用Windows防火墙,并且服务器之间没有防火墙。本地DTC配置与我们现有的服务器匹配,并且dtcping.exe工具报告服务器之间的对话没有问题。如果我们关闭导致多个事务的代码,那么问题就消失了,因此一切都指向EF和MSDTC之间的问题。

我们也无法在我们的开发计算机上运行多个事务(Windows 10)。在更新的Windows版本中,EF和DTC是否有可能损坏了某些东西?还是我们缺少了一些东西?

我在EF github项目中问到,被告知这对sql-client团队可能比EF更重要。我也为此标记了sqlclient。

1 个答案:

答案 0 :(得分:0)

我们试图拉下Entity Framework 6.3.0预览版9 nuget程序包,并在新的Windows 2019服务器上对其进行了测试,并且使用范围交易神奇地DTC可以正常工作(不会中止)。 EF 6.3.0版本中的某些内容必须解决使用EF 6.2.0公共Nuget版本终止DTC交易时遇到的问题。

由于6.3.0仍处于预览状态,因此我们同时回滚了6.2.0并关闭了范围交易,直到6.3.0全面发布。我将为此更新github问题,以便开发团队知道。