Nservicebus 尚未配置任何消息序列化程序
从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.ControllerDelegatesNservicebus 尚未配置任何消息序列化程序,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
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\ServiceController1.b\u 1(ServiceController
1sc)中的Topshelf.Internal.ServiceController1(ServiceController
1sc):第35行
在Magnum.StateMachine.LambdaAction1.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
应该是同一个类