Kann die DLL 'mqrt.dll' nicht laden

7

Ich habe einen WCF-Dienst entwickelt, der als Windows-Dienst gehostet wird und einen MSMQ-Endpunkt verfügbar macht.

Ich habe die Client-App auf SERVER1 und den MSMQ- und WCF-Dienst auf SERVER2.

Wenn SERVER1 / ClientApp versucht, eine Nachricht an SERVER2 MSMQ zu senden, erhalte ich folgenden Fehler:

%Vor%

Sowohl SERVER1 als auch SERVER2 führen Windows Server 2008 R2 Enterprise (6.1 SP1) aus, und beide haben MSMQ über die Funktion zum Hinzufügen von Features im Server-Manager installiert.

Ich verstehe, dass die DLL fehlt (ziemlich offensichtlich aus dem Fehler!), aber ich habe keine Ahnung, was ich installieren sollte, um die DLL zu bekommen, wo es sein sollte.

Eine Suche in Windows Explorer zeigt, dass die DLL in den folgenden Verzeichnissen auf beiden Servern vorhanden ist ....

  • C: \ Windows \ System32
  • C: \ Windows \ SysWOW64
  • C: \ Windows \ winsxs \ x86_microsoft-windows-msmq-runtime-core_31bf3856ad364e35_6.1.7601.17514_none_5768e2ad17453bd6
  • C: \ Windows \ winsxs \ amd64_microsoft-windows-msmq-runtime-core_31bf3856ad364e35_6.1.7601.17514_none_b3877e30cfa2ad0c

Jede Hilfe wird geschätzt.

    
ETFairfax 02.09.2013, 16:05
quelle

3 Antworten

4

Ich bin nicht klüger, aber die Dinge funktionieren jetzt.

Nach Stunden auf SO und Google habe ich nur überprüft, dass MSMQ auf beiden Servern installiert wurde, indem ich eine schnelle Konsolenanwendung mit dem hier abgegriffenen Code geschrieben habe ...

Ссылка

Ich habe die Konsolen-App sowohl auf Server1 als auch auf Server2 ausgeführt und beide kamen mit einem Ergebnis von True zu IsMsmqInstalled zurück.

Ich habe dann meine Anwendung ausgeführt und der Fehler "Kann DLL nicht laden" mqrt.dll "" wurde nicht mehr ausgelöst.

Ich weiß nicht, ob der Aufruf von NativeMethods.LoadLibrary("Mqrt.dll"); die DLL oder so etwas registriert hat, aber es hat mein Problem sicherlich behoben.

Ich hoffe, das hilft jemandem in der Zukunft!

    
ETFairfax 03.09.2013, 13:56
quelle
16

Eine offensichtliche beiseite; Wenn Sie nicht die Windows-Funktion haben - & gt; Microsoft Message Queue (MSMQ) Server installiert, dann erhalten Sie diesen Fehler. Rufen Sie einfach Programme und Funktionen und dann Windows-Funktion ein- oder ausschalten auf.

    
SChalice 02.11.2014 22:28
quelle
1

Dies kann dadurch verursacht werden, dass Ihr Dienst auf SERVER2 gestartet wird und die Initialisierung abgeschlossen ist, bevor MSMQ fertig initialisiert ist. Der einfachste Weg, dies zu testen, besteht darin, den Service neu zu starten, der den WCF MSMQ-Endpunkt hostet. Wenn der WCF-Dienst in IIS gehostet wird, führt das Springen des App-Pools wahrscheinlich zu demselben Ergebnis, aber ich weiß es nicht genau - ich habe mich noch nie mit einem von IIS gehosteten MSMQ-Endpunkt befasst.

Wenn das erneute Starten des Dienstes Ihr Problem behebt und Ihr eigener Dienst ein Windows-Dienst ist, können Sie MSMQ als Abhängigkeit zu Ihrem eigenen Dienst hinzufügen, sodass der Start verzögert wird, bis MSMQ fertig ist. This Antwort auf Server Fault beschreibt, wie es geht. Übrigens heißt der Dienst, auf den Sie sich verlassen wollen, "Message Queuing"

    
bvoyelr 10.10.2014 14:16
quelle

Tags und Links