所以遇到了这个奇怪的问题。我正在尝试从未经身份验证的事务性 msmq 接收消息。我的环境是:
- 队列为 Windows Server 2012 R2 的服务器。这也是数据库服务器(SQL Server)
- 安装客户端应用程序的服务器也是 Windows Server 2012 R2
我正在尝试将消息从 SQL Server 发送到 MSMQ(工作正常)。但是当客户端应用程序尝试使用下面的代码接收消息时,它会抛出我在标题中提到的错误。
private void OnPeekCompleted(object sender, PeekCompletedEventArgs args)
{
MessageQueue mq = (MessageQueue)sender;
if (mq != null)
{
try
{
if (Log.IsInfoEnabled)
{
Log.InfoFormat("[{0}] Starting processing message queue {1}", _endpoint.RouteName, _queue.QueueName);
}
mq.EndPeek(args.AsyncResult);
MessageQueueTransaction transaction = new MessageQueueTransaction();
transaction.Begin();
Message message = mq.Receive(transaction);
... // omitted for simplicity
我无法从数据库服务器访问客户端服务器,因此我需要在同一数据库服务器上拥有消息队列,因为我从 SQL 将消息发送到队列
我检查了以下内容:
- 从 SQL 发送消息没有问题
- 服务器之间没有 n/w 可访问性问题
- 在消息队列服务器安全属性中启用未经身份验证的 RPC 调用
- 队列格式正确。我正在使用直接操作系统格式。也尝试过使用 TCP 格式指定 IP 地址而不是机器名
但无济于事。有任何想法吗?
谢谢