2

我有一个 .net 3.5 windows 服务,它使用在 2008 应用程序服务器上运行的 msmq。该服务与数据库服务器上的 sql 2005 数据库通信。

在 2008 Web 服务器上从我的 aspx 页面调用此服务时,我收到下面提到的错误:

“分布式事务管理器 (MSDTC) 的网络访问已被禁用。请使用组件服务管理工具在 MSDTC 的安全配置中启用 DTC 进行网络访问。事务管理器已禁用其对远程/网络事务的支持。(来自 HRESULT 的异常: 0x8004D024)"

我遵循了这个指示,但没有运气。

当我调试代码时,在我的 Windows 服务代码中的一行尝试使用 ExecuteNonQuery 方法执行存储过程时会抛出上述错误。

我在这里想念什么?

仅供参考,我在网络服务器上的 web.config 看起来像:

<netMsmqBinding>
    <binding name="NetMsmqBinding_IWcfEmailService" closeTimeout="00:01:00"
        openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
        deadLetterQueue="System" durable="true" exactlyOnce="true"
        maxReceivedMessageSize="5000000" maxRetryCycles="2"
        receiveErrorHandling="Fault"
        receiveRetryCount="5" retryCycleDelay="00:30:00" timeToLive="1.00:00:00"
        useSourceJournal="false" useMsmqTracing="false" queueTransferProtocol="Native"
        maxBufferPoolSize="524288" useActiveDirectory="false">
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
          maxBytesPerRead="4096" maxNameTableCharCount="16384" />
      <security mode="None">
        <transport msmqAuthenticationMode="WindowsDomain"
            msmqEncryptionAlgorithm="RC4Stream"
            msmqProtectionLevel="Sign" msmqSecureHashAlgorithm="Sha1" />
        <message clientCredentialType="Windows" />
      </security>
    </binding>
</netMsmqBinding>
4

3 回答 3

1

您需要启用 msdtc。看:

如何在 SQL Server 上启用 MSDTC?

您还必须对 SQL Server 说它应该允许连接(远程 TCP?)。这可以通过 SQL Server 外围应用配置来完成。

于 2009-06-26T19:21:15.270 回答
0

我假设您已启用 DTC 进行远程访问...

Administrative Tools –&gt; 
Component Services –&gt; 
My Computer properties –&gt;
MSDTC tab –&gt; 
Security Configuration tab –&gt;
Network DTC Access (checked) 

如果是这样,这里有一个方便的DTC 故障排除指南。它以 BizTalk 为中心,但概念是相同的。

于 2009-06-26T19:31:14.703 回答
-1

您是否也尝试过在数据库服务器上启用网络访问?您可以指定连接上的几个选项来控制驱动程序如何参与事务。

于 2009-04-08T00:47:47.080 回答