我的计算机已连接到域,但是当我去创建公共队列时:
MessageQueue.Create(@".\testqueue");
我收到此错误:
工作组安装计算机可以 不支持这项行动。
为什么MSMQ会认为我在工作组计算机上?
答案 0 :(得分:24)
我知道这已经很晚了,而且已经有了一个已接受的答案,但我刚刚遇到了这个问题,并且通过更改队列字符串的格式解决了这个问题。
当我的队列名称为此时,我收到了工作组错误:
".\QueueName"
当我将其更改为更正式的版本时,没有错误并且发送到队列工作:
"FormatName:DIRECT=OS:ComputerName\private$\QueueName"
以防其他人遇到这篇文章,现在他们还有别的东西可以试试......
答案 1 :(得分:15)
作为域的一部分是在AD集成模式下安装MSMQ的前提。 它不保证MSMQ IS安装在AD集成模式下。 如果出现以下情况,MSMQ将以工作组模式安装:
是的,工作组名称在域成员情况下令人困惑。
答案 2 :(得分:14)
我遇到了同样的问题并将其更改为@"。\ private $ \ QueueName"
答案 3 :(得分:2)
我遇到了同样的问题,请看下面的解决方案。我不知道原因,但以这种方式创建队列非常有效。
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");
}
您可以以相同的方式创建用于接收消息的队列。
答案 4 :(得分:0)
添加用于文档目的...在尝试访问事务性死信队列时,我收到错误“工作组安装计算机不支持该操作”,这是由于未指定计算机名称。我用句号表示计算机名称。例如“FORMATNAME:DIRECT = OS:\ SYSTEM $; DEADXACT。”即使使用完整的格式名称,它也不起作用。用计算机名替换句点后问题解决了。以下是工作代码。
using (var queue = new MessageQueue($@"FORMATNAME:DIRECT=OS:{Environment.MachineName}\SYSTEM$;DEADXACT"))
{
queue.Purge();
}
答案 5 :(得分:0)
答案 6 :(得分:0)
在服务器上,我无法运行MSMQ并遇到各种错误,包括问题中提出的错误。
工作组安装计算机不支持该操作
对我有用的不是摆弄Server Manager,而是使用Powershell重新安装MSMQ。
Remove-WindowsFeature Msmq; Add-WindowsFeature MsMq
这两个cmdlet可以在以管理员身份运行的Powershell控制台中运行。至少它为我解决了该错误,但这将安装整个Msmq功能,包括子功能。
答案 7 :(得分:0)
我从Visual Studio(2015)调试网站时遇到此错误。 重新启动iisexpress解决了此问题...