2009-12-18 7 views
9

Ich habe einen WCF-Dienst in einem Windows-Dienst gehostet, die ich auf Automatisch festgelegt, damit es automatisch gestartet wird, wenn der Server hochgefahren wird. Der Dienst ist Endpunkt ist MSMQ gesichert.MSMQ unterstützt WCF-Dienst in einem Windows-Dienst gehostet schlägt beim Start fehl

Wenn ich den Dienst manuell starte, ist alles gut. Aber wenn der Dienst beim Booten startet, erhalte ich eine MSMQ Ausnahme:

System.TypeInitializationException: The type initializer for 
'System.ServiceModel.Channels.Msmq' threw an exception. ---> 
System.ServiceModel.MsmqException: The version check failed with the error: 
'The Message Queuing service is not available (-1072824309, 0xc00e000b)'. The 
version of MSMQ cannot be detected All operations that are on the queued channel 
will fail. Ensure that MSMQ is installed and is available. 
    at System.ServiceModel.Channels.MsmqQueue.GetMsmqInformation 
        (Version& version, Boolean& activeDirectoryEnabled) 
    at System.ServiceModel.Channels.Msmq..cctor() 
    --- End of inner exception stack trace --- 

Es scheint, wie die MSMQ ist nicht bereit, verwendet werden, bevor der Dienst gestartet wird ... Gibt es eine Lösung für dieses?

Antwort

7

Sie müssen eine Abhängigkeit von MSMQ in Ihrem WCF-Diensthost hinzufügen. Sie können im Service-Installer dies tun:

ServiceInstaller serviceInstaller = new ServiceInstaller(); 
// Adding this property to your ServiceInstaller forces 
// your service to start after MSMQ. 
serviceInstaller.ServicesDependedOn = new string[] { "MSMQ" }; 

Wenn Sie keinen Service Installer verwenden, können Sie auch die MSMQ-Abhängigkeit für Ihren Dienst hinzufügen, indem Sie die Windows-Registrierung bearbeiten, wie in „Microsoft Support: How to delay loading of specific services“ beschrieben.

+0

danke! google'ing diese Ausnahmebotschaft erwies sich als fruchtlos! – puffpio

Verwandte Themen