Ошибка MSMQ c00e0025h/0xc00e0025

Я установил MSMQ и MSMQ AD Integration на контроллере домена, на котором также размещен сервер Exchange. Весь код был успешно использован на других контроллерах домена (ни на одном из которых нет сервера Exchange; я искренне надеюсь, что причина не в этом!).

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

SecurityIdentifier sidNetworkService = new System.Security.Principal.SecurityIdentifier("S-1-5-20");
ActiveDirectoryAccessRule NewRule = new ActiveDirectoryAccessRule(sidNetworkService, ActiveDirectoryRights.CreateChild, AccessControlType.Allow, new Guid("9a0dc344-c100-11d1-bbc5-0080c76670c0"), ActiveDirectorySecurityInheritance.All);
de.ObjectSecurity.AddAccessRule(NewRule);
de.CommitChanges();

Однако при попытке создать или получить доступ к общедоступной очереди возникает следующая ошибка:

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

Как описано здесь, я удалил MSMQ и Интеграция с MSMQ AD, установил заново, но ошибка та же.

Я убедился, что MSMQ установлен в режиме домена, доказав, что HKLM\Software\Microsoft\MSMQ\Parameters имеет Workgroup значение REG_DWORD 0x00000001 (1).

Итак, я просмотрел eventvwr.msc и обнаружил следующие ошибки:

Службе очереди сообщений не удалось присоединиться к домену компьютера «EXCH». Ошибка 0xc00e0025:

а также

Службе очереди сообщений не удалось создать объект msmq (конфигурация MSMQ) в доменных службах Active Directory. Ошибка c00e0025h:

Эти ошибки уже описаны здесь, но без принятого решения.

Итак, у кого-нибудь есть идея, где найти виновника?


person Alexander    schedule 02.06.2017    source источник
comment
Ради интереса, зачем вам публичные очереди?   -  person tom redfern    schedule 02.06.2017
comment
@tomredfern У меня есть приложение с высокой нагрузкой, которое может быть установлено в кластере, а связь между внешними серверами и внутренней службой осуществляется через MSMQ.   -  person Alexander    schedule 02.06.2017
comment
Если Workgroup = 0x00000001, то вы определенно НЕ находитесь в режиме интеграции с AD.   -  person John Breakwell    schedule 03.06.2017
comment
Публичные очереди полезны только в том случае, если вам нужно сначала найти их в Active Directory. Если вы уже знаете имена очередей, то общедоступные очереди, вероятно, являются пустой тратой времени.   -  person John Breakwell    schedule 03.06.2017
comment
Что касается проблемы, у вас не было прав доступа для создания необходимых объектов в AD. Под какой учетной записью вы вошли?   -  person John Breakwell    schedule 03.06.2017
comment
@JohnBreakwell Я не местный житель, но я думаю, что этот документ явно говорит мне проверить, что это действительно 1.   -  person Alexander    schedule 03.06.2017
comment
@JohnBreakwell Мои пулы приложений IIS работают как NetworkService, служба Windows работает как NetworkService, а служба MSMQ также работает как NetworkService.   -  person Alexander    schedule 03.06.2017
comment
Здесь важна учетная запись, которая установила MSMQ, а не используемые им учетные записи. Если учетная запись не может создать начальные объекты AD, она никогда не будет работать.   -  person John Breakwell    schedule 03.06.2017
comment
В документе говорится, что для начала он должен быть равен 1, но это просто для проверки того, что вы еще не интегрированы в AD. Workgroup=1 означает режим рабочей группы,   -  person John Breakwell    schedule 04.06.2017