【问题标题】:COM obj error: though DTC is configuredCOM obj 错误:虽然配置了 DTC
【发布时间】:2012-01-26 04:27:55
【问题描述】:

我有一些正在使用的 c# 代码

 using (TransactionScope ts =
                new TransactionScope(TransactionScopeOption.Required,
                    new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted }))
            {

...

                ts.Complete();
            }

我收到以下错误。你知道为什么吗?

“/MyApp”应用程序中的服务器错误。

对 COM 组件的调用已返回错误 HRESULT E_FAIL。

描述:执行过程中发生了未处理的异常 当前的网络请求。请查看堆栈跟踪以获取更多信息 有关错误的信息以及它在代码中的来源。

异常详细信息:System.Runtime.InteropServices.COMException:错误 HRESULT E_FAIL 已从对 COM 组件的调用中返回。

来源错误:

在执行过程中产生了一个未处理的异常 当前的网络请求。有关原产地和位置的信息 可以使用下面的异常堆栈跟踪来识别异常。

堆栈跟踪:

[COMException (0x80004005): 错误 HRESULT E_FAIL 已返回 从对 COM 组件的调用。]
System.Transactions.Oletx.IDtcProxyShimFactory.ReceiveTransaction(UInt32 propgationTokenSize, Byte[] propgationToken, IntPtr managedIdentifier, Guid&事务标识符,OletxTransactionIsolationLevel& 隔离级别,ITransactionShim&transactionShim) +0
System.Transactions.TransactionInterop.GetOletxTransactionFromTransmitterPropigationToken(字节 [] 传播令牌)+384

[TransactionManagerCommunicationException:与 底层事务管理器失败。]
System.Transactions.TransactionInterop.GetOletxTransactionFromTransmitterPropigationToken(字节 [] 传播令牌)+259971
System.Transactions.TransactionStatePSPEOperation.PSPEPromote(InternalTransaction 发送)+209
System.Transactions.TransactionStateDelegatedBase.EnterState(InternalTransaction 发送)+339
System.Transactions.EnlistableStates.Promote(InternalTransaction tx) +21 System.Transactions.Transaction.Promote() +60 System.Transactions.TransactionInterop.ConvertToOletxTransaction(Transaction 交易)+71
System.Transactions.TransactionInterop.GetExportCookie(交易 交易,Byte[]行踪)+309
System.Data.SqlClient.SqlInternalConnection.GetTransactionCookie(事务 交易,Byte[] whereAbouts) +45
System.Data.SqlClient.SqlInternalConnection.EnlistNonNull(事务 发送)+630
System.Data.ProviderBase.DbConnectionInternal.ActivateConnection(事务 交易)+45
System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection 拥有对象)+1466
System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection 拥有连接)+84
System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection externalConnection, DbConnectionFactory connectionFactory) +1645767
System.Data.SqlClient.SqlConnection.Open() +258

【问题讨论】:

  • 很棒的异常消息,详细而无话可说。 E_FAIL 糟透了,仅表示“无法做到,不知道为什么”。这也是每个人都使用 Java 而不是 COM+ 的主要原因。如果修改配置或神奇的 SO 帖子无法解决问题,您将需要 Microsoft 支持。
  • 如果您启用了防火墙,请确保已将其配置为供 MSDTC 使用。如果不是这样,按照 user9... 的建议重新安装 MSDTC 有时会神奇地修复它。

标签: c#


【解决方案1】:

[TransactionManagerCommunicationException: 与底层事务管理器的通信失败。] - 这表明 MSDTC 未安装或未正常工作。您可以尝试安装/重新安装 MSDTC 并启用它吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 2017-04-18
    • 2023-03-26
    • 2015-05-17
    • 1970-01-01
    • 2020-02-05
    相关资源
    最近更新 更多