2010-05-07 11 views
1

Mon service hébergé GenericHost ne parvient pas à démarrer avec le message suivant:"Pas sérialiseur de message a été configuré" erreur lors du démarrage terminal NServiceBus

2010-05-07 09: 13: 47406 [1] FATAL NServiceBus.Host .Internal.GenericHost [(null)] < (null)> - System.InvalidOperationException: Aucun sérialiseur de message n'a été con figuré. à NServiceBus.Unicast.Transport.Msmq.MsmqTransport.CheckConfiguration() dans d: \ BuildAgent-02 \ work \ 672d81652eaca4e1 \ src \ impl \ unicast \ NServiceBus.Unicast.Msmq \ MsmqTransport.cs: ligne 241 à NServiceBus. Unicast.Transport.Msmq.MsmqTransport.Start() à d: \ BuildAgent-02 \ work \ 672d81652eaca4e1 \ src \ impl \ unicast \ NServiceBus.Unicast.Msmq \ MsmqTransport .cs: ligne 211 à NServiceBus.Unicast.UnicastBus. NServiceBus.IStartableBus.Start (ActionAction startup) dans d: \ BuildAgent-02 \ work \ 672d81652eaca4e1 \ src \ unicast \ NServiceBus.Uni cast \ UnicastBus.cs: ligne 694 sur NServiceBus.Unicast.UnicastBus.NServiceBus.IStartableBus.Start() dans d: \ BuildAgent-02 \ travail \ 672d81652eaca4e1 \ src \ unicast \ NServiceBus.Unicast \ UnicastBus.cs: l ine 665 à NS erviceBus.Host.Internal.GenericHost.Start() dans d: \ BuildAgent-02 \ work \ 672d81652eaca4e1 \ src \ host \ NServiceBus.Host \ interne \ GenericHost.cs: ligne 77

Ma configuration de point final ressemble:

public class ServiceEndpointConfiguration 
    : IConfigureThisEndpoint, AsA_Publisher, IWantCustomInitialization 
{ 
    public void Init() 
    { 
     // build out persistence infrastructure 
     var sessionFactory = Bootstrapper.InitializePersistence(); 

     // configure NServiceBus infrastructure 
     var container = Bootstrapper.BuildDependencies(sessionFactory); 

     // set up logging 
     log4net.Config.XmlConfigurator.Configure(); 

     Configure.With() 
      .Log4Net() 
      .UnityBuilder(container) 
      .XmlSerializer(); 
    } 
} 

Et mon app.config ressemble à:

<configSections> 
    <section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig, NServiceBus.Core" /> 
    <section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core" /> 
    <section name="Logging" type="NServiceBus.Config.Logging, NServiceBus.Core" /> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false" /> 
</configSections> 

<Logging Threshold="DEBUG" /> 

<MsmqTransportConfig 
    InputQueue="NServiceBus.ServiceInput" 
    ErrorQueue="NServiceBus.Errors" 
    NumberOfWorkerThreads="1" 
    MaxRetries="2" /> 

<UnicastBusConfig 
    DistributorControlAddress="" 
    DistributorDataAddress="" 
    ForwardReceivedMessagesTo="NServiceBus.Auditing"> 
    <MessageEndpointMappings> 
     <!-- publishers don't need to set this for their own message types --> 
    </MessageEndpointMappings> 
</UnicastBusConfig> 

<connectionStrings> 
    <add name="Db" connectionString="Data Source=..." providerName="System.Data.SqlClient" /> 
</connectionStrings> 

<log4net debug="true"> 
    <root> 
     <level value="INFO"/> 
    </root> 
    <logger name="NHibernate"> 
     <level value="ERROR" /> 
    </logger> 
</log4net> 

Cela a fonctionné dans le passé, mais semble échouer lorsque l'hôte générique commence. Ma configuration de point de terminaison est ci-dessous, avec le app.config pour le service. Ce qui est étrange, c'est que dans ma configuration de point final, je spécifie d'utiliser XmlSerializer pour la sérialisation des messages. Je ne vois pas d'autres erreurs dans la sortie de la console précédant le message d'erreur. Qu'est-ce que je rate?

Merci, Steve

Répondre

4

Il ressemble à ceci était ma propre question, bien que j'avais du mal à comprendre que sur la base du message d'erreur que j'ai reçu. J'ai une classe de base pour tous mes messages:

public abstract class RequestMessage : IMessage {} 

Récemment, j'ai créé un message partenaire:

public abstract class ResponseMessage<TRequest> 
    where TRequest : RequestMessage {} 

Apparemment, lorsque l'hôte commençait la IStartableBus, il a frappé ce message générique tapez et ne le manipulerait pas correctement. J'ai vraiment vu l'erreur sous-jacente lors de l'exécution avec DefaultBuilder, plutôt que l'UnityBuilder que j'utilise dans mon projet. Cela avait quelque chose à voir avec la contrainte de type générique. J'avais supposé que cela fonctionnerait, mais malheureusement, cela n'a pas fonctionné.

Cordialement, Steve

+0

Merci, +1 pour moi un gain de temps à essayer de comprendre ce qui était à l'origine de l'erreur. Le sérialiseur de message ne semble pas aimer les interfaces génériques. N'a pas eu le temps de voir ce qui est nécessaire pour le faire fonctionner, mais a annulé un changement et le faire sans génériques pour le moment –