我的计算机已连接到域,但是当我去创建公共队列时:
MessageQueue.Create(@".\testqueue");
我收到此错误:
工作组安装计算机不支持该操作。
为什么 MSMQ 会认为我在工作组计算机上?
我知道这已经很晚了,并且已经有一个可以接受的答案,但是我刚刚遇到了这个问题,并通过更改队列字符串的格式解决了这个问题。
当我的队列名称是这样时,我收到了工作组错误:
".\QueueName"
当我将其更改为更正式的版本时,没有错误并且发送到队列有效:
"FormatName:DIRECT=OS:ComputerName\private$\QueueName"
以防万一其他人看到这篇文章,现在他们有别的东西可以尝试......
我遇到了同样的问题并通过将其更改为 @".\private$\QueueName" 来解决它
成为域的一部分是在 AD 集成模式下安装 MSMQ 的先决条件。它不保证 MSMQ 以 AD 集成模式安装。MSMQ 将以工作组模式安装,如果:
是的,工作组名称在域成员情况下令人困惑。
我遇到了同样的问题,看看下面的解决方案。我不知道原因,但以这种方式创建队列效果很好。
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");
}
您可以以相同的方式创建用于接收消息的队列。
添加用于文档目的...我在尝试访问事务死信队列时收到错误“工作组安装计算机不支持该操作”,这是由于未指定机器名称。我使用句点来表示计算机名称。例如“FORMATNAME:DIRECT=OS:.\SYSTEM$;DEADXACT”。即使使用完整的格式名称,它也不起作用。用计算机名称替换句点后问题解决。下面是工作代码。
using (var queue = new MessageQueue($@"FORMATNAME:DIRECT=OS:{Environment.MachineName}\SYSTEM$;DEADXACT"))
{
queue.Purge();
}
我在从 Visual Studio (2015) 调试网站时遇到此错误。重新启动 iisexpress 解决了这个问题......