WCF Windows 服务与 MSDTC 的问题

发布于 2024-07-16 03:08:54 字数 1538 浏览 6 评论 0原文

我有一个 .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>

I've a .net 3.5 windows service which uses msmq running on 2008 application server.This service communicates with the sql 2005 database on the database server.

Am getting an error mentioned below on calling this service from my aspx page on 2008 web server:

"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.
The transaction manager has disabled its support for remote/network transactions. (Exception from HRESULT: 0x8004D024)"

I followed this instruction, but no luck.

When I debug the code, above error is thrown at a line in my windows service code where its trying to execute stored procedure using ExecuteNonQuery method.

What am i missing here?

FYI, my web.config on the web server looks like:

<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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

握住我的手 2024-07-23 03:08:54

您需要启用 msdtc。 请参阅:

如何在 SQL Server 上启用 MSDTC?

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

You need to enable msdtc. See:

How do I enable MSDTC on SQL Server?

You must also say to SQL Server that it should allow connections (remote TCP?). That can be done from the SQL Server Surface Area Configuration.

紅太極 2024-07-23 03:08:54

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

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

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

I assume you have enabled the DTC for remote access ...

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

If so, here's a handy DTC troubleshooting guide. It's BizTalk centric, but the concepts are the same.

小姐丶请自重 2024-07-23 03:08:54

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

have you tried enabled network access on the db server as well? There are also several options on the connection you can specify to control how the driver participates in transactions.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文