Почему MSMQ думает, что я на компьютере рабочей группы?
Мой компьютер подключен к домену, но когда я иду, чтобы создать общую очередь:
MessageQueue.Create(@".testqueue");
Я получаю эту ошибку:
компьютер установки рабочей группы делает не поддерживает операцию.
почему MSMQ думает, что я на компьютере рабочей группы?
5 ответов
быть частью домена является предварительным курсором для установки MSMQ в режиме ad-integrated. Это не гарантирует, что MSMQ установлен в режиме ad-integrated. 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");
}
вы можете создать очередь для получения сообщения таким же образом.
добавление для целей документации... Я получал ошибку "компьютер установки рабочей группы не поддерживает операцию" при попытке доступа к транзакционной очереди мертвых писем, и это было связано с тем, что не указывалось имя машины. Я использовал точку для обозначения имени компьютера. например, " FORMATNAME: DIRECT=OS:.\SYSTEM$; DEADXACT". Он не работает даже с использованием полного имени формата. Проблема решена после замены периода на имя компьютера. Ниже приведен рабочий код.
using (var queue = new MessageQueue($@"FORMATNAME:DIRECT=OS:{Environment.MachineName}\SYSTEM$;DEADXACT"))
{
queue.Purge();
}