Opracowałem usługę WCF, która jest hostowana jako usługa systemu Windows i udostępnia punkt końcowy MSMQ.Nie można załadować biblioteki DLL 'mqrt.dll'
Mam aplikację klienta na SERVER1, a usługa MSMQ i WCF na SERVER2.
Gdy SERWER1/ClientApp próbuje wcisnąć wiadomość do server2 MSMQ, mam następujący errror:
System.TypeInitializationException: The type initializer for 'System.ServiceModel.Channels.Msmq' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'mqrt.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
at System.ServiceModel.Channels.UnsafeNativeMethods.MQGetPrivateComputerInformation(String computerName, IntPtr properties)
at System.ServiceModel.Channels.MsmqQueue.GetMsmqInformation(Version& version, Boolean& activeDirectoryEnabled)
at System.ServiceModel.Channels.Msmq..cctor()
--- End of inner exception stack trace ---
at System.ServiceModel.Channels.Msmq.EnterXPSendLock(Boolean& lockHeld, ProtectionLevel protectionLevel)
at System.ServiceModel.Channels.MsmqOutputChannel.OnSend(Message message, TimeSpan timeout)
at System.ServiceModel.Channels.OutputChannel.Send(Message message, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
Exception rethrown at [7]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at FacilityManager.Service.NotificationsProcessorServiceReference.INotificationsProcessor.SendNewReactiveTaskNotifications(NewReactiveTaskDataContract newReactiveTaskDataContract)
Zarówno SERWER1 i SERWER2 z systemem Windows Server 2008 R2 Enterprise (6.1 SP1) i oba miały MSMQ zainstalowane za pośrednictwem funkcji Dodaj w Menedżerze serwera.
Rozumiem, że brakuje biblioteki DLL (dość oczywiste z powodu błędu!), Ale nie mam pojęcia, co powinienem zainstalować, aby pobrać bibliotekę DLL tam, gdzie powinna być.
Przeszukanie w Eksploratorze Windows wskazuje, że DLL jest obecny w następujących katalogach na obu serwerach ....
- 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
Każda pomoc doceniona.
Włącz rejestrowanie fuzji, możesz także spróbować użyć [Dependency Walker] (http://www.dependencywalker.com/) w plikach binarnych. –
Polecam również ponowną instalację msmq na komputerze klienta. –