Nservicebus 尚未配置任何消息序列化程序

Nservicebus 尚未配置任何消息序列化程序,nservicebus,nservicebus3,nservicebus4,Nservicebus,Nservicebus3,Nservicebus4,从nservicebus的版本3升级到版本4,并收到以下错误消息 “尚未配置任何消息序列化程序。” 堆栈跟踪: 在c:\TeamCity\buildAgent\work\d4de8921a0aabf04\src\NServiceBus.Core\Unicast\UnicastBus.cs中的NServiceBus.Unicast.UnicastBus.ValidateConfiguration()处:第866行 在c:\TeamCity\buildAgent\work\d4de8921a0aab

从nservicebus的版本3升级到版本4,并收到以下错误消息

“尚未配置任何消息序列化程序。”

堆栈跟踪:

在c:\TeamCity\buildAgent\work\d4de8921a0aabf04\src\NServiceBus.Core\Unicast\UnicastBus.cs中的NServiceBus.Unicast.UnicastBus.ValidateConfiguration()处:第866行 在c:\TeamCity\buildAgent\work\d4de8921a0aabf04\src\NServiceBus.Core\Unicast\UnicastBus.cs中的NServiceBus.Unicast.UnicastBus.Start(Action startupAction)处:第739行 在c:\TeamCity\buildAgent\work\d4de8921a0aabf04\src\NServiceBus.Core\Unicast\UnicastBus.Start()中的NServiceBus.Unicast.UnicastBus.Start()处:第718行 在d:\dev\backup\soa\CycleMonkey\Inventory\Inventory.CreateOrder.IT_OPS.CustomInit.Init()中的CycleMonkey.Inventory.CreateOrder.IT_OPS.CustomInit.Init()处:第20行 在c:\TeamCity\buildAgent\work\d4de8921a0aabf04\src\NServiceBus.Core\Hosting\Configuration\ConfigurationManager.ConfigureCustomInitAndStartup()中的NServiceBus.Hosting.Configuration.ConfigManager.ConfigureCustomInitAndStartup()处:第43行 在c:\TeamCity\buildAgent\work\d4de8921a0aabf04\src\NServiceBus.Core\Hosting\GenericHost.cs中的NServiceBus.Hosting.GenericHost.PerformConfiguration()处:第126行 在c:\TeamCity\buildAgent\work\d4de8921a0aabf04\src\NServiceBus.Core\Hosting\genericost.cs中的NServiceBus.Hosting.genericost.Start()处:第29行 在c:\TeamCity\buildAgent\work\d4de8921a0aabf04\src\Hosting\NServiceBus.Hosting.Windows.WindowsHost.Start()中的NServiceBus.Hosting.Windows.WindowsHost.Start()处:第56行 在c:\TeamCity\buildAgent\work\d4de8921a0aabf04\src\Hosting\NServiceBus.Hosting.Windows.Program.c_中显示ClassD.b_5(WindowsHost服务):第76行 在c:\Projects\topshelfornsb\src\Topshelf\Internal\ControllerDelegates.cs中的Topshelf.Internal.ControllerDelegates
1.StartActionObject(Object obj):第18行
在Topshelf.Internal.IsolatedServiceControllerRapper
1.c_显示c:\Projects\Topshelfornsb\src\Topshelf\Internal\IsolatedServiceControllerRapper.cs中的Class2.b_1(服务服务):第65行 在c:\Projects\topshelfornsb\src\Topshelf\Internal\ServiceController
1.b\u 1(ServiceController
1sc)中的Topshelf.Internal.ServiceController
1(ServiceController
1sc):第35行 在Magnum.StateMachine.LambdaAction
1.Execute(T实例、事件、对象参数)中:第0行
在Magnum.StateMachine.EventActionList中执行(T StateMachine、事件事件、对象参数):第0行

升级过程中是否遗漏了某些内容?正在运行的代码的版本3:

public class EndpointConfig : IConfigureThisEndpoint, AsA_Server
{
}

public class CustomInit : IWantCustomInitialization
    {
                    public void Init()
        {
            Configure.Instance
                     .CastleWindsorBuilder()
                     .DefaultBuilder()
                     .Sagas()
                     .RunTimeoutManagerWithInMemoryPersistence()
                     .ConfigureMongoSagaPersister<CreateOrderSagaData>("mongodb://localhost/create-order");

            Configure.Instance
                     .XmlSerializer()
                     .MsmqSubscriptionStorage()
                     .MsmqTransport()
                     .UnicastBus();

        }
    }
public class EndpointConfig:IConfigureThisEndpoint,AsA_服务器
{
}
公共类CustomInit:IWantCustomInitialization
{
公共void Init()
{
配置.Instance
.CastleWindsorBuilder()
.DefaultBuilder()
.Sagas()
.RunTimeoutManagerWithInMemoryPersistence()
.ConfigureMongoSagaPersister(“mongodb://localhost/create-order");
配置.Instance
.XmlSerializer()
.MsmqSubscriptionStorage()
.MsmqTransport()
.UnicastBus();
}
}
相同代码的版本4,以及升级所需的建议更改

public class EndpointConfig : IConfigureThisEndpoint, AsA_Server, UsingTransport<Msmq>
{
}

public class CustomInit : IWantCustomInitialization
    {
        public void Init()
        {
            Configure.Features.Enable<Sagas>();
            Configure.Serialization.Xml();

            Configure.Instance
               .CastleWindsorBuilder()
               .UseInMemoryTimeoutPersister()
               .ConfigureMongoSagaPersister<CreateOrderSagaData>("mongodb://localhost/create-order");

            Configure.Instance
                    .MsmqSubscriptionStorage()
                    .UnicastBus()
                    .CreateBus()
                    .Start();
        }

    }
公共类EndpointConfig:IConfigureThisEndpoint,AsA_服务器,使用传输
{
}
公共类CustomInit:IWantCustomInitialization
{
公共void Init()
{
Configure.Features.Enable();
Configure.Serialization.Xml();
配置.Instance
.CastleWindsorBuilder()
.UseInMemoryTimeoutPersister()中使用
.ConfigureMongoSagaPersister(“mongodb://localhost/create-order");
配置.Instance
.MsmqSubscriptionStorage()
.UnicastBus()
.CreateBus()
.Start();
}
}

在引导不同的容器时,请将IWantCustomInitialization接口与前面提到的@JohnSimons一样的IConfigureThisEndpoint一起使用

另外,当您在IConfigureThisEndpoint中实现IWantCustomInitialization时,还没有总线,因此此时还没有创建实例,因此您需要使用Configure.With()而不是Configure.instance

注意:您不需要指定UsingTransport,因为Msmq是默认传输。 您也不需要指定Configure.Serialization.Xml(),因为Xml是默认的序列化程序

因此,如果您将代码更改为以下内容,它应该可以工作:

public class EndpointConfig : IConfigureThisEndpoint, AsA_Server, IWantCustomInitialization
{
    public void Init()
    {
        Configure.Features.Enable<Sagas>();

        Configure.With()
            .CastleWindsorBuilder()
            .UseInMemoryTimeoutPersister()
            .MsmqSubscriptionStorage();

    }
}
公共类EndpointConfig:IConfigureThisEndpoint、AsA_服务器、IWantCustomInitialization
{
公共void Init()
{
Configure.Features.Enable();
用()配置
.CastleWindsorBuilder()
.UseInMemoryTimeoutPersister()中使用
.MsmqSubscriptionStorage();
}
}

尝试取消对CreateBus和Start的调用-这些调用不属于IWantCustomInitialization。另外,
IConfigureThiseEndpoint
IWantCustomInitialization
应该是同一个类