0

Я создаю веб-решение (MVC/C#), которое размещает сообщения в общедоступной очереди MSMQ. В настоящее время я тестирую сервер разработки, где я являюсь администратором.Внутренний сертификат очереди сообщений не существует (NoInternalUserCertificate)

Веб-сервер является единственным сервером и включен режим аутентификации WindowsAuthentication и ASP.NET, а анонимная аутентификация отключена.

Пул приложений на сервере работает под учетной записью домена. Этот же счет использовался для входа на сервер и, следовательно, сгенерировал сертификат на машине (ref: John Breakwell’s blog и this StackOverflow solution)

я установил MSMQ с these MSMQ installation options Я создал общую очередь, которая является транзакционной и аутентификации, к которому как аутентифицированные пользователи, так и учетная запись домена имеют полный контроль

При запуске в режиме отладки в Visual Studio (но с использованием той же очереди сообщений) сообщение отправляется успешно.

Однако, когда я перехожу на сайт с помощью браузера и выполняю действие, которое должно отправить сообщение, процесс завершается с ошибкой. Очередь получается правильно; сбой происходит в момент отправки транзакционного сообщения.


Я попытался возобновляя внутренний сертификат (в Message Queue Properties), который изменил сообщение об ошибке: криптографическая функция не удалось (CorruptedSecurityData). При регистрации на сервере с использованием учетной записи службы сообщение об ошибке возвращается к оригиналу.

Я попытался изменить разрешения очереди сообщений, чтобы «Все» и «АНОНИЙНЫЙ ЛОГОС» и моя личная учетная запись домена имели полный контроль, а Аутентификация удалена.

Редактировать # 1

Обеспечение как очереди и отправки свойств сообщения включают подтверждение FullReachQueue, и с выше разрешений набор, журнал событий: {Приложения и службы Logs, Microsoft, Windows, MSMQ, End2End} отображает две новых позиции:

Message with ID CN=msmq,CN=TDBDEV,OU=Hosted Servers,OU=Member Servers,DC=npfit,DC=nhs,DC=uk\8194 was sent to queue PUBLIC=e50ae2b5-25ce-447d-96ea-9ec4c9de3d48 

Message with ID CN=msmq,CN=TDBDEV,OU=Hosted Servers,OU=Member Servers,DC=npfit,DC=nhs,DC=uk\8194 was put into queue PUBLIC=e50ae2b5-25ce-447d-96ea-9ec4c9de3d48 

персонализированного протоколирование системы также записанное:

2016-05-13 15:00:40,045 NPFIT\MyUserName 
ERROR Logging.Log4NetLogger Message Queue Exception: Inner Exception Error Code: -2147016672 System.Messaging.MessageQueueException (0x80004005) 
    at System.Messaging.MessageQueue.GenerateQueueProperties() 
    at System.Messaging.MessageQueue.get_QueuePath() 
    at System.Messaging.MessageQueue.get_QueueName() 
    at MSMQCoreService.QueueManager.SendMessage[T](String queueName, T messageObject) in c:\Source\Application\MSMQCoreService\QueueManager.cs:line 164 

Это берет меня Редактировать # 5 другого упомянутого выше столбца stackoverflow, но безуспешно добавляя сообщения в очередь со всеми разрешениями.

+0

Какое точное сообщение об ошибке вы получаете - пожалуйста, можете добавить к вашему вопросу. –

+0

Извините, Джеймс, я должен был быть яснее. Название - это сообщение, которое я получаю. Я поймаю ошибку как исключение MessageQueueException. Сообщение об исключении: «Внутренний сертификат очереди сообщений пользователя не существует.«внутреннее исключение пустое, а код ошибки MessageQueueException -« NoInternalUserCertificate ». – Andy

+0

Конечно, я ищу, чтобы узнать конфигурацию сервера, необходимую для того, чтобы все это работало. Код взаимодействует с очередью через собственные объекты Message .NET Я считаю, что это проблема с разрешениями/сертификатами, поскольку один и тот же код отлично работает через Visual Studio. Я просто не в своей глубине с конфигурацией сертификатов сервера. – Andy

ответ

0

Я знаю, что это старый поток, но я недавно столкнулся с аналогичной проблемой в отношении узла BizTalk Server, изолированного (IIS), вызывающего MessageQueue.

Корневой причиной было то, что профиль учетной записи пула приложений IIS не был загружен, поэтому информация о сертификате не была доступна.

Решение: выберите параметр «Загрузить профиль пользователя» в пуле приложений в IIS.