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

时间:2011-05-10 14:32:36

标签: dns msmq workgroup

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

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

我收到此错误:

  

工作组安装计算机可以   不支持这项行动。

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

8 个答案:

答案 0 :(得分:24)

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

当我的队列名称为此时,我收到了工作组错误:

".\QueueName"

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

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

以防其他人遇到这篇文章,现在他们还有别的东西可以试试......

答案 1 :(得分:15)

作为域的一部分是在AD集成模式下安装MSMQ的前提。 它不保证MSMQ IS安装在AD集成模式下。 如果出现以下情况,MSMQ将以工作组模式安装:

  1. 未选择AD集成作为设置选项
  2. 选择了AD集成,但未能初始化;检查事件日志
  3. 是的,工作组名称在域成员情况下令人困惑。

答案 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)

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

MSMQ configuration

答案 6 :(得分:0)

在服务器上,我无法运行MSMQ并遇到各种错误,包括问题中提出的错误。

  

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

对我有用的不是摆弄Server Manager,而是使用Powershell重新安装MSMQ。

Remove-WindowsFeature Msmq; Add-WindowsFeature MsMq

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

Powershell - reinstalling MSMQ

答案 7 :(得分:0)

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