1

我正在使用 WCF (C#) 在工作组模式下在 Windows Server 2003 下从私有 MSMQ 队列发送/接收消息。

客户端 WCF/服务 WCF 和 MSMQ 在同一台计算机上。

有一个客户端将消息发送到私有队列,效果很好。有一个服务从同一个私有队列接收消息,但该服务似乎永远不会被 MSMQ 调用。(没有错误发生)

消息在队列中堆积,但没有任何内容被拉出。在另一台计算机(域模式而不是工作组模式)上,消息被完美地发送和接收。

导致 MSMQ 从不调用我的服务的工作组模式有什么问题?

之后,我编写了一个 C# 测试,总是在同一台计算机上,但这次我创建了 MessageQueue 并以这种方式订阅 ReceiveCompleted 事件:

MessageQueue MQueue = new MessageQueue(".\\private$\\nameofmyqueue");
MQueue.MessageReadPropertyFilter.SetAll();
MQueue.ReceiveCompleted += MessageEventHandler;
Message Msg = MQueue.Receive();

现在有新消息时,我会从 MSMQ 队列接收事件。

我认为我的服务配置(WFC 配置)或命名空间保留存在问题。

4

1 回答 1

0

我发现我的麻烦在哪里。事实上,我使用了一个调用 SQL Server 2005 过程的事务处理服务。

为了在 SQL 2005 中使用事务绑定,过程的执行被支撑在事务范围内。

如果抛出异常但未捕获,则 DTC 用于回滚过程。我的问题是我的服务器上未激活 DTC/远程客户端连接。

因此,要么您应该激活 DTC/远程客户端连接,要么您不使用事务范围。

如果要使用DTC和远程客户端连接,必须先激活远程客户端连接,因为激活 DTC 和远程客户端连接会导致服务器重启

于 2008-12-19T10:43:36.267 回答