2010-05-07 8 views
1

Моего GenericHost размещаемой службы не в состоянии начать со следующим сообщением:«Нет сообщения сериализатора не настроен» Ошибка при запуске NServiceBus конечной

2010-05-07 09: 13: 47,406 [1] СМЕРТЕЛЬНОЙ NServiceBus.Host .Internal.GenericHost [(null)] < (null)> - System.InvalidOperationException: никакой сериализатор сообщений не был con фигурным. на NServiceBus.Unicast.Transport.Msmq.MsmqTransport.CheckConfiguration() в D: \ BuildAgent-02 \ работа \ 672d81652eaca4e1 \ SRC \ осущ \ одноадресной \ NServiceBus.Unicast.Msmq \ MsmqTransport.cs: Строка 241 в NServiceBus. Unicast.Transport.Msmq.MsmqTransport.Start() в d: \ BuildAgent-02 \ work \ 672d81652eaca4e1 \ src \ impl \ unicast \ NServiceBus.Unicast.Msmq \ MsmqTransport .cs: строка 211 у NServiceBus.Unicast.UnicastBus. NServiceBus.IStartableBus.Start (Action startupAction) в d: \ BuildAgent-02 \ work \ 672d81652eaca4e1 \ src \ unicast \ NServiceBus.Uni cast \ UnicastBus.cs: строка 694 в NServiceBus.Unicast.UnicastBus.NServiceBus.IStartableBus.Start() в d: \ BuildAgent-02 \ work \ 672d81652eaca4e1 \ src \ unicast \ NServiceBus.Unicast \ UnicastBus.cs: l ine 665 at NS erviceBus.Host.Internal.GenericHost.Start() в D: \ BuildAgent-02 \ работа \ 672d81652eaca4e1 \ SRC \ хост \ NServiceBus.Host \ Внутренние \ GenericHost.cs: линия 77

Моя конфигурация конечных точек выглядит следующим образом:

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(); 
    } 
} 

И моя app.config выглядит следующим образом:

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

Это работало в прошлом, но, похоже, происходит сбой при запуске универсального хоста. Ниже приведена конфигурация моей конечной точки, а также приложение app.config для службы. Странно то, что в моей конфигурации конечных точек я указываю, что я использую XmlSerializer для сериализации сообщений. Я не вижу никаких других ошибок в выводах консоли, предшествующих сообщению об ошибке. Что мне не хватает?

Спасибо, Стив

ответ

4

Похоже, что это был мой собственный вопрос, хотя у меня было трудное время, полагая, что на основании сообщения об ошибке, которое я получил. У меня есть базовый класс для всех моих сообщений:

public abstract class RequestMessage : IMessage {} 

Недавно я создал сообщение партнера:

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

По-видимому, когда хозяин начинал вверх IStartableBus, он бы ударил этого общее сообщение типа и не будет обрабатывать его правильно. Я действительно видел основную ошибку при работе с DefaultBuilder, а не с UnityBuilder, который я использую в своем проекте. Это как-то связано с общим типом ограничений. Я предположил, что это сработает, но, к сожалению, этого не произошло.

С уважением, Стив

+0

спасибо, +1 за спасая меня время, пытаясь выяснить, что вызывает ошибку. Сериализатор сообщений не похож на общие интерфейсы. Не успел посмотреть, что нужно, чтобы заставить его работать, но отбросил изменения и сделал это с помощью генерических средств на время. –

Смежные вопросы