0

Ich erstelle eine webbasierte Lösung (MVC/C#), die Nachrichten in einer öffentlichen MSMQ-Warteschlange ablegt. Ich teste gerade auf einem Entwicklungsserver, wo ich Administrator bin.Das interne Message Queuing-Zertifikat des Benutzers ist nicht vorhanden. (NoInternalUserCertificate)

Der Webserver ist ein einzelner Server und hat WindowsAuthentication und ASP.NET-Identitätswechsel aktiviert und die anonyme Authentifizierung deaktiviert.

Der Anwendungspool auf dem Server wird unter einem Domänenkonto ausgeführt. Diese gleiche Konto wurde verwendet, auf den Server anzumelden und damit ein Zertifikat auf der Maschine erzeugt hat (ref: John Breakwell’s blog und this StackOverflow solution)

I installiert MSMQ mit these MSMQ installation options I eine öffentliche Warteschlange erstellt haben, die Transaktions- und authentifiziert, an dem Authentifizierte Benutzer und das Domänenkonto haben die volle Kontrolle

Wenn im Debug-Modus in Visual Studio ausgeführt wird (aber die gleiche Nachrichtenwarteschlange verwendet), wird eine Nachricht erfolgreich gesendet.

Wenn ich jedoch mit einem Browser zur Site navigiere und eine Aktion durchführe, die eine Nachricht senden soll, schlägt der Prozess fehl. Die Warteschlange wird korrekt abgerufen. Der Fehler tritt an dem Punkt auf, an dem eine Transaktionsnachricht gesendet wird.


I haben versucht, die interne Zertifikat zu erneuern (in Message Queue Properties), die die Fehlermeldung geändert: kryptographische Funktion ist fehlgeschlagen (CorruptedSecurityData). Beim Einloggen auf den Server mit dem Dienstkonto kehrt die Fehlermeldung zum Original zurück.

Ich habe versucht, die Berechtigungen der Nachrichtenwarteschlange zu ändern, so dass "Jeder" und "ANONYMOUS LOGON" und mein persönliches Domänenkonto die volle Kontrolle haben und die Authentifizierung entfernt wird.

Edit # 1

Sicherstellung sowohl der Warteschlange und sendet Nachrichteneigenschaften umfassen eine Bestätigung von FullReachQueue, und mit dem obigen Berechtigungen gesetzt, das Ereignisprotokoll: {Anwendungen und Dienstprotokolle, Microsoft, Windows, MSMQ, End2End} zeigt zwei neue Einträge:

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 

Die individuelle Systemprotokollierung auch aufgezeichnet:

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 

Das bin ich # bearbeiten dauert 5 des anderen Stackoverflow-Posts, der oben erwähnt wurde, aber erfolglos Nachrichten mit allen offenen Berechtigungen zu der Warteschlange hinzugefügt.

+0

Was ist die genaue Fehlermeldung, die Sie bekommen - bitte können Sie zu Ihrer Frage hinzufügen. –

+0

Sorry James, ich hätte klarer sein sollen. Der Titel ist die Nachricht, die ich bekomme. Ich erhalte den Fehler als MessageQueueException. Die Ausnahmebedingungsnachricht lautet: "Das interne Message Queuing-Zertifikat des Benutzers ist nicht vorhanden.", die innere Ausnahme ist leer und der MessageQueueException-Fehlercode ist" NoInternalUserCertificate ". – Andy

+0

Sicher. Ich bin auf der Suche nach der Serverkonfiguration, die erforderlich ist, damit dies funktioniert. Der Code interagiert mit den Warteschlangen über die .NET eigenen Message-Objekte Ich glaube, dass es sich um ein Problem mit Berechtigungen/Zertifikaten handelt, da derselbe Code über Visual Studio einwandfrei funktioniert. Ich bin gerade bei der Serverkonfiguration von Zertifikaten überfordert. – Andy

Antwort

0

Ich weiß, dass dies ein alter Thread ist, aber ich stieß vor kurzem auf ein ähnliches Problem in Bezug auf einen BizTalk Server Isolated (IIS-basierter) Host, der eine MessageQueue aufruft.

Die Ursache scheint zu sein, dass das Profil des IIS-Anwendungspool-Kontos nicht geladen wurde und daher keine Zertifikatsinformationen verfügbar waren.

Lösung: Wählen Sie die Option "Benutzerprofil laden" im Anwendungspool in IIS.

Verwandte Themen