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

#dns #msmq #workgroup

#dns #msmq #рабочая группа

Вопрос:

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

 MessageQueue.Create(@".testqueue");
  

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

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

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

Ответ №1:

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

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

 ".QueueName"
  

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

 "FormatName:DIRECT=OS:ComputerNameprivate$QueueName"
  

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

Комментарии:

1. «.QueueName» указывает на общедоступную очередь. Отправка сообщений в общедоступную очередь выдает вышеупомянутую ошибку. Но отправка сообщений в частную очередь этого не делает. Ваша официальная версия фактически указывает на частную очередь. Вот почему они работают.

Ответ №2:

Я столкнулся с той же проблемой и решил ее, изменив ее на @». private $ QueueName»

Ответ №3:

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

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

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

Комментарии:

1. Я проверил журналы и обнаружил, что MSMQ обнаружил, что предыдущая конфигурация MSMQ конфликтовала с ее работой с AD. Я установил MSMQ, а позже включил интеграцию с AD. Я полностью удалил MSMQ, а затем переустановил его со всем (включая интеграцию с AD), и я перестал получать ошибку. Спасибо за вашу помощь.

2. Ваш комментарий описывает тот ответ, который работал для меня: я не только должны добавить дополнительные компоненты в msmq, мне пришлось удалить с msmq полностью сначала, чтобы заставить его работать должным образом.

3. Может кто-нибудь, пожалуйста, пояснить, где найти «журналы событий» (я пытался найти что-нибудь о MSMQ в eventvwr.msc, но Microsoft / Windows / MSMQ / End2End пусто) и как «удалить объект MSMQ в AD»?

4. Удаление устаревших объектов MSMQ Active Directory blogs.msdn.microsoft.com/johnbreakwell/2009/12/16 /…

5. Как и у @MikePateras, у меня не была установлена «Интеграция доменных служб MSMQ Active Directory», но мне не пришлось удалять MSMQ. Мне нужно было только установить интеграцию с AD и перезапустить как службу очереди сообщений, так и приложение, которое пыталось получить доступ к очереди. (Предположительно, было бы лучше остановить службу MSMQ, установить интеграцию с AD и запустить службу.)

Ответ №4:

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

 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 resu<
    }
}

public void SendMessage()
{
    string queuePath = QueueName;
    MessageQueue  messageQueue = MessageQueue.Create(queuePath);
    messageQueue.Send("msg");            
}
  

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

Ответ №5:

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

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

Ответ №6:

Возможно, MSMQ установлен на вашем компьютере как гостевой пользователь или другой пользователь, поэтому удалите его с компьютера и установите с правами администратора.

Конфигурация MSMQ

Ответ №7:

На сервере у меня возникли проблемы с запуском MSMQ и получением различного рода ошибок, включая ошибку, заданную в вопросе.

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

У меня сработало не возня с диспетчером сервера, а переустановка MSMQ с помощью Powershell.

Удалить-WindowsFeature Msmq; Добавить-WindowsFeature MsMq

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

Powershell - переустановка MSMQ

Ответ №8:

я получил эту ошибку при отладке веб-сайта из Visual Studio (2015). перезапуск iisexpress решил эту проблему…