2010-11-30 4 views
1

Après avoir modifié le projet Subscriber2 dans l'échantillon PubSub, je reçois cette erreur lorsqu'un message est reçu par cet abonné:NServiceBus: types de gestionnaire de messages ne chargeant pas correctement lors de la configuration via le code

erreur NServiceBus.Unicast .Transport.Msmq.MsmqTransport [(null)] < (null)> - Impossible d'extraire les données de message . System.TypeLoadException: Impossible de gérer le type 'MyMessages.EventMessage'.

J'ai changé le fichier EndpointConfig.cs à ceci:

using NServiceBus; 

namespace Subscriber2 
{ 
    public class EndpointConfig : IConfigureThisEndpoint, AsA_Server, IWantCustomInitialization 
    { 
     public void Init() 
     { 
      Configure.With(new[] { typeof(EventMessageHandler), typeof(NServiceBus.Unicast.Transport.CompletionMessage) }) 
       .DefaultBuilder() 
       .XmlSerializer() 
       .UnicastBus() 
       .DoNotAutoSubscribe(); 
     } 
    } 
} 

Est-ce que quelqu'un sait pourquoi cela ne fonctionne pas?

Répondre

2

Vous n'avez pas spécifié votre type de message dans la liste. Si vous utilisez cette surcharge de With(), vous devrez fournir tous les types. Je recommande plutôt de pointer vers un assembly spécifique et de laisser NSB le scanner pour les types corrects. Sinon, vous ne pouvez rien faire et laissez-le scanner le répertoire bin.

+0

On dirait que j'ai listé le type du gestionnaire, et non le message. Ma vraie question est alors, est-il un moyen de spécifier explicitement le gestionnaire? Je veux être en mesure de déterminer le gestionnaire à l'exécution, et je crains que si j'ai plusieurs gestionnaires du même type, il serait confus. – skb

+0

Vous devez ajouter une condition au conteneur utilisé par NSB. Pour ce faire, vous pouvez transmettre votre instance personnelle du conteneur à NSB. De cette façon, vous avez un contrôle total sur ce qui est chargé. –

Questions connexes