【发布时间】:2011-08-22 12:59:21
【问题描述】:
我的电脑连接到一个域,但是当我去创建一个公共队列时:
MessageQueue.Create(@".\testqueue");
我收到此错误:
工作组安装计算机可以 不支持操作。
为什么 MSMQ 会认为我在工作组计算机上?
【问题讨论】:
我的电脑连接到一个域,但是当我去创建一个公共队列时:
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 解决了这个问题...
【讨论】: