MSMQ подкрепена WCF услуга, хоствана в услуга на Windows, се проваля при стартиране

Имам WCF услуга, хоствана в услуга на Windows, която задам на Automatic, така че ще стартира автоматично, когато сървърът бъде активиран. Услугата е крайна точка, която се поддържа от MSMQ.

Когато стартирам услугата ръчно, всичко е наред. Но когато услугата стартира при стартиране, получавам изключение за MSMQ:

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 ---

Изглежда, че MSMQ не е готов за използване преди стартирането на услугата... има ли решение за това?


person puffpio    schedule 18.12.2009    source източник


Отговори (1)


Трябва да добавите зависимост от MSMQ във вашия WCF сервизен хост. Можете да направите това в инсталатора на услугата:

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

Ако не използвате инсталатор на услуга, можете също да добавите MSMQ зависимостта за вашата услуга, като редактирате системния регистър на Windows, както е описано в "Поддръжка на Microsoft: Как да забавите зареждането на конкретни услуги".

person Daniel Vassallo    schedule 18.12.2009