0

NSB 3.0.3 を使用しています。ここに私のプロジェクトがあります:

  • Registrations.Messages (すべてのイベントはコマンド メッセージです)
  • 登録.ドメイン
  • 登録.EventStorage
  • Registrations.MessageHandlers
  • 登録.サーバー

Registrations.Server は NServiceBus.Host を使用して nsb をホストしています。エンドポイントの構成は次のとおりです。

public class EndpointConfig : IConfigureThisEndpoint, AsA_Publisher, IWantCustomInitialization
{
    #region Implementation of IWantCustomInitialization

    public void Init()
    {
        var kernel = new StandardKernel();
        kernel.Load(new BackendModule());

        Configure.With()
            .NinjectBuilder(kernel);
    }

    #endregion
}

サーバーの構成は次のとおりです。

<?xml version="1.0" encoding="utf-8"?>

<configSections>
    <section name="MessageForwardingInCaseOfFaultConfig"
             type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core" />
    <section name="UnicastBusConfig"
             type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core"/>
</configSections>

<MessageForwardingInCaseOfFaultConfig ErrorQueue="error" />

<UnicastBusConfig>
    <MessageEndpointMappings>
        <add Messages="Registrations.Messages"
             Endpoint="Accounts.Server"/>
    </MessageEndpointMappings>
</UnicastBusConfig>

コマンドを送信するテスト コンソール アプリを作成しました。NSB がメッセージを発行するまで、すべてが機能します。例外は以下のとおりです。

NSB をラップするクラスを作成しました。

public class NsbBus : IEventBus
{
    private readonly IBus m_nsb;

    public NsbBus(IBus nsb)
    {
        m_nsb = nsb;
    }

    #region Implementation of IEventBus

    public void Publish<T>(T @event) where T : class, IEvent<IIdentity>
    {
        m_nsb.Publish(@event);
    }

    public void PublishAll<T>(IEnumerable<T> events) where T : class, IEvent<IIdentity>
    {
        m_nsb.Publish(events);
    }

    #endregion
}

Type System.Collections.Generic.List`1[[Aec.Cqrs.IEvent`1[[Aec.Cqrs.IIdentity, Aec.Cqrs, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], Aec.Cqrs, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] was not registered in the serializer. Check that it appears in the list of configured assemblies/types to scan.

そのアセンブリ Aec.Cqrs はサーバー プロジェクトで参照され、bin ディレクトリに展開されます。

同様の投稿を見ましたが、それらは Web プロジェクトに関するものでした。これは Web プロジェクトではありません。ここでシリアル化エラーが発生する理由はありますか?

ありがとう

4

0 に答える 0