gpt4 book ai didi

.net - ADO.NET Entity Framework 中事务的 MSDTC 问题

转载 作者:行者123 更新时间:2023-12-04 14:36:45 25 4
gpt4 key购买 nike

在我们当前的项目中,我们使用 ADO.NET Entity Framework 作为应用程序的数据层。有一些任务需要在事务中运行,因为数据库中有很多工作要做。我正在使用 TransactionScope围绕这些任务。

using (TransactionScope transactionScope = new TransactionScope(TransactionScopeOption.RequiresNew))
{
// Do something...
transactionScope.Complete();
}

一旦我使用 TransactionScope,问题就出现了出现异常:

System.Data.EntityException: The underlying provider failed on Open. ---> System.Transactions.TransactionManagerCommunicationException: Communication with the underlying transaction manager has failed. ---> System.Runtime.InteropServices.COMException (0x80004005): Error HRESULT E_FAIL has been returned from a call to a COM component.



看来这个错误与 MSDTC有关(微软分布式事务协调器)。当我更改 MSDTC 的安全配置时,会引发另一个异常:

System.Data.EntityException: The underlying provider failed on Open. ---> System.Transactions.TransactionManagerCommunicationException: Network access for Distributed Transaction Manager (MSDTC) has been disabled. Please enable DTC for network access in the security configuration for MSDTC using the Component Services Administrative tool.



无论 MSDTC 配置如何, TransactionScope会导致错误。
有人知道这里出了什么问题吗?

最佳答案

默认情况下,MSDTC 已禁用网络访问。为了让它工作,你应该去

Control Panel-> Administrative Tools->Component Services->Component Serivces->Computes->My computer->Right click->Properties->MSDTC->Security Configuration



并选中以下复选框网络 DTC 访问、允许入站、允许出站。应根据您的环境选择身份验证。您可能还想看看 DTCPing调试分布式事务的工具。给你一个快捷方式 - 你可能需要修改你的注册表:

HKLM\Software\Policies\Microsoft\Windows NT\RPCRestrictRemoteClients=0 HKLM\Software\Policies\Microsoft\Windows NT\RPCEnableAuthEpResolution=1



使一切正常运行。

关于.net - ADO.NET Entity Framework 中事务的 MSDTC 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1611950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com