1

GenericHostがホストするサービスが次のメッセージで開始できません。

2010-05-07 09:13:47,406 [1] FATAL NServiceBus.Host.Internal.GenericHost [(null)] <(null)>-System.InvalidOperationException:メッセージシリアライザーが構成されていません。NServiceBus.Unicast.Transport.Msmq.MsmqTransport.CheckConfiguration()のd:\ BuildAgent-02 \ work \ 672d81652eaca4e1 \ src \ impl \ unicast \ NServiceBus.Unicast.Msmq \ MsmqTransport.cs:line 241 at NServiceBus.Unicast.Transport .Msmq.MsmqTransport.Start()in d:\ BuildAgent-02 \ work \ 672d81652eaca4e1 \ src \ impl \ unicast \ NServiceBus.Unicast.Msmq \ MsmqTransport .cs:line 211 at NServiceBus.Unicast.UnicastBus.NServiceBus.IStartableBus.Start (アクションstartupAction)in d:\ BuildAgent-02 \ work \ 672d81652eaca4e1 \ src \ unicast \ NServiceBus.Uni cast \ UnicastBus.cs:line 694 at NServiceBus.Unicast.UnicastBus.NServiceBus.IStartableBus.Start()in d:

私のエンドポイント構成は次のようになります。

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

1 に答える 1

4

受け取ったエラーメッセージから判断するのに苦労しましたが、これは私自身の問題のようです。すべてのメッセージの基本クラスがあります。

public abstract class RequestMessage : IMessage {} 

最近、私はパートナーメッセージを作成しました:

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

どうやら、ホストがIStartableBusを起動しているときに、この一般的なメッセージタイプにヒットし、正しく処理されなかったようです。プロジェクトで使用しているUnityBuilderではなく、DefaultBuilderを使用して実行したときに、根本的なエラーが実際に発生しただけです。それはジェネリック型の制約と関係がありました。これでうまくいくと思っていたのですが、残念ながらうまくいきませんでした。

よろしく、スティーブ

于 2010-05-11T00:06:39.343 に答える