21

我的计算机已连接到域,但是当我去创建公共队列时:

MessageQueue.Create(@".\testqueue");

我收到此错误:

工作组安装计算机不支持该操作。

为什么 MSMQ 会认为我在工作组计算机上?

4

8 回答 8

29

我知道这已经很晚了,并且已经有一个可以接受的答案,但是我刚刚遇到了这个问题,并通过更改队列字符串的格式解决了这个问题。

当我的队列名称是这样时,我收到了工作组错误:

".\QueueName"

当我将其更改为更正式的版本时,没有错误并且发送到队列有效:

"FormatName:DIRECT=OS:ComputerName\private$\QueueName"

以防万一其他人看到这篇文章,现在他们有别的东西可以尝试......

于 2012-05-31T21:05:49.063 回答
16

我遇到了同样的问题并通过将其更改为 @".\private$\QueueName" 来解决它

于 2014-06-14T11:37:32.410 回答
15

成为域的一部分是在 AD 集成模式下安装 MSMQ 的先决条件。它不保证 MSMQ 以 AD 集成模式安装。MSMQ 将以工作组模式安装,如果:

  1. 未选择 AD 集成作为设置选项
  2. 选择了 AD 集成但未能初始化;检查事件日志

是的,工作组名称在域成员情况下令人困惑。

于 2011-05-10T14:44:16.473 回答
3

我遇到了同样的问题,看看下面的解决方案。我不知道原因,但以这种方式创建队列效果很好。

private MessageQueue messageQueue;
public const string DEFAULT_QUEUE_NAME = "newQueue";
public const string QUEUENAME_PREFIX = ".\\Private$\\";

public static string QueueName
{
    get
    {
        string result = string.Format("{0}{1}", QUEUENAME_PREFIX, DEFAULT_QUEUE_NAME);
        return result;
    }
}

public void SendMessage()
{
    string queuePath = QueueName;
    MessageQueue  messageQueue = MessageQueue.Create(queuePath);
    messageQueue.Send("msg");            
}

您可以以相同的方式创建用于接收消息的队列。

于 2012-06-27T18:30:40.903 回答
0

添加用于文档目的...我在尝试访问事务死信队列时收到错误“工作组安装计算机不支持该操作”,这是由于未指定机器名称。我使用句点来表示计算机名称。例如“FORMATNAME:DIRECT=OS:.\SYSTEM$;DEADXACT”。即使使用完整的格式名称,它也不起作用。用计算机名称替换句点后问题解决。下面是工作代码。

using (var queue = new MessageQueue($@"FORMATNAME:DIRECT=OS:{Environment.MachineName}\SYSTEM$;DEADXACT"))
{
    queue.Purge();
}
于 2016-08-22T14:59:07.340 回答
0

MSMQ 可能以访客用户或其他用户的身份安装在您的计算机上,因此请将其从计算机中删除并在具有管理权限的情况下安装它。

MSMQ 配置

于 2019-01-10T11:33:01.100 回答
0

在服务器上,我在运行 MSMQ 时遇到了问题,并且出现了不同类型的错误,包括问题中提出的错误。

工作组安装电脑不支持操作

对我有用的不是摆弄服务器管理器,而是使用 Powershell 重新安装 MSMQ。

删除-WindowsFeature Msmq; Add-WindowsFeature MsMq

这两个 cmdlet 可以在以管理员身份运行的 Powershell 控制台中运行。至少它为我修复了错误,但这将安装整个 Msmq 功能,包括子功能。

Powershell - 重新安装 MSMQ

于 2019-06-28T20:20:39.123 回答
0

我在从 Visual Studio (2015) 调试网站时遇到此错误。重新启动 iisexpress 解决了这个问题......

于 2019-12-10T10:58:18.347 回答