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

Dns 为什么MSMQ认为我';我在工作组计算机上?,dns,msmq,workgroup,Dns,Msmq,Workgroup,我的计算机已连接到域,但当我要创建公共队列时: MessageQueue.Create(@".\testqueue"); 我得到这个错误: 工作组安装计算机不支持 不支持该操作 为什么MSMQ会认为我在工作组计算机上?作为域的一部分是在AD集成模式下安装MSMQ的预光标。 它不保证MSMQ以AD集成模式安装。 在以下情况下,MSMQ将以工作组模式安装: 未选择AD集成作为安装选项 已选择AD集成,但初始化失败;检查事件日志 是的,在域成员情况下,工作组名称令人困惑。我知道这已经晚了,并且已经有

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

MessageQueue.Create(@".\testqueue");
我得到这个错误:

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


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

作为域的一部分是在AD集成模式下安装MSMQ的预光标。 它不保证MSMQ以AD集成模式安装。 在以下情况下,MSMQ将以工作组模式安装:

  • 未选择AD集成作为安装选项
  • 已选择AD集成,但初始化失败;检查事件日志

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

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

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

    ".\QueueName"
    
    当我将其更改为更正式的版本时,没有出现任何错误,并且发送到队列有效:

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

    为了防止其他人看到这篇文章,现在他们有其他的东西可以尝试…

    我也面临同样的问题,看看下面的解决方案。我不知道原因,但以这种方式创建队列非常有效

    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");            
    }
    

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

    我也遇到了同样的问题,并通过将其更改为@“\private$\QueueName”

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

    using (var queue = new MessageQueue($@"FORMATNAME:DIRECT=OS:{Environment.MachineName}\SYSTEM$;DEADXACT"))
    {
        queue.Purge();
    }
    

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


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

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

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

    删除WindowsMSMQ功能;添加WindowsFeature MsMq

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


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

    我检查了日志,发现MSMQ检测到以前的MSMQ配置与它使用AD时发生冲突。我安装了MSMQ,后来启用了AD集成。我完全卸载了MSMQ,然后重新安装了它的所有内容(包括广告集成),我不再收到错误。感谢您的帮助。您的评论描述了对我有效的答案:我不仅必须添加额外的MSMQ组件,而且必须首先完全卸载MSMQ才能使其正常工作。有人能详细说明在哪里可以找到“事件日志”吗(我试图在eventvwr.msc中查找有关MSMQ的信息,但Microsoft/Windows/MSMQ/End2End为空)以及如何“删除AD中的MSMQ对象”?删除与@MikePateras类似的过时MSMQ Active Directory对象,我没有“MSMQ Active Directory域服务集成”已安装,但我不必卸载MSMQ。我只需要安装AD集成并重新启动消息队列服务和尝试访问队列的应用程序。(可能最好停止MSMQ服务,安装AD集成,然后启动服务。)“\QueueName”指向公共队列。向公共队列发送消息会引发上述错误。但向专用队列发送消息不会引发上述错误。您的正式版本实际上指向专用队列。这就是它们工作的原因。