Я создаю веб-решение (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, но безуспешно добавляя сообщения в очередь со всеми разрешениями.
Какое точное сообщение об ошибке вы получаете - пожалуйста, можете добавить к вашему вопросу. –
Извините, Джеймс, я должен был быть яснее. Название - это сообщение, которое я получаю. Я поймаю ошибку как исключение MessageQueueException. Сообщение об исключении: «Внутренний сертификат очереди сообщений пользователя не существует.«внутреннее исключение пустое, а код ошибки MessageQueueException -« NoInternalUserCertificate ». – Andy
Конечно, я ищу, чтобы узнать конфигурацию сервера, необходимую для того, чтобы все это работало. Код взаимодействует с очередью через собственные объекты Message .NET Я считаю, что это проблема с разрешениями/сертификатами, поскольку один и тот же код отлично работает через Visual Studio. Я просто не в своей глубине с конфигурацией сертификатов сервера. – Andy