Почему MSMQ думает, что я на компьютере рабочей группы?

Мой компьютер подключен к домену, но когда я иду, чтобы создать общую очередь:

MessageQueue.Create(@".testqueue");

Я получаю эту ошибку:

компьютер установки рабочей группы делает не поддерживает операцию.

почему MSMQ думает, что я на компьютере рабочей группы?

5 ответов


быть частью домена является предварительным курсором для установки MSMQ в режиме ad-integrated. Это не гарантирует, что MSMQ установлен в режиме ad-integrated. MSMQ будет установлен в режиме рабочей группы, если:

  1. интеграция AD не была выбрана в качестве опции установки
  2. интеграция AD была выбрана, но не удалось инициализировать; проверьте журналы событий

да, имя рабочей группы сбивает с толку в ситуации, член домена.


Я знаю, что это поздно, и уже есть принятый ответ, но у меня только что была эта проблема, и она была решена путем изменения формата строки очереди.

когда мое имя очереди, я получил ошибку рабочей группы:

".\QueueName"

когда я изменил его на более формальную версию, ошибки не было и отправка в очередь работала:

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

на всякий случай, если кто-то еще наткнется на этот пост, теперь у них есть что-то еще, чтобы попробовать...


Я получил ту же проблему и решил ее, изменив ее на @".\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");            
}

вы можете создать очередь для получения сообщения таким же образом.


добавление для целей документации... Я получал ошибку "компьютер установки рабочей группы не поддерживает операцию" при попытке доступа к транзакционной очереди мертвых писем, и это было связано с тем, что не указывалось имя машины. Я использовал точку для обозначения имени компьютера. например, " FORMATNAME: DIRECT=OS:.\SYSTEM$; DEADXACT". Он не работает даже с использованием полного имени формата. Проблема решена после замены периода на имя компьютера. Ниже приведен рабочий код.

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