使用NServiceBus的一套集成服务已被放弃在我的膝盖上(不幸的是,我没有参与原始实现,编写代码的人已离开)。
这些服务在我们的开发和工作中运作良好。测试环境;但我不能让它们在我们的生产环境中运行。我收到了错误
NServiceBus.Unicast.Transport.CompletionMessage was not registered in the serializer.
Check that it appears in the list of configured assemblies/types to scan.
我检查了服务器上的配置文件,它们几乎相同;特别是MsmqTransportConfig
和UnicastBusConfig
块是相同的。两种环境之间的主要区别在于,在生产中,Web / app /数据库层位于不同的服务器上,而在测试环境中,它们都位于同一服务器上。但是,集成服务调用只能从应用层进行,即使在生产环境中,应用层和集成服务也位于同一台服务器上(至少目前如此),所以我不确定这应该会有所作为。
我确实下载了文档(.chm文件)但我点击的每个主题都说“断开链接”。
我还阅读了几个问题和答案,包括this one,但由于代码在我们的测试环境中工作,我有点不愿意对它进行更改。
我们按如下方式配置NServiceBus:
NServiceBus.Configure.WithWeb()
.Log4Net()
.StructureMapBuilder(ObjectFactory.Container)
.XmlSerializer()
.MsmqTransport()
.IsTransactional(true)
.PurgeOnStartup(false)
.MsmqSubscriptionStorage()
.UnicastBus()
.LoadMessageHandlers()
.ImpersonateSender(false)
.CreateBus()
.Start();
并且传输配置如下:
<MsmqTransportConfig
InputQueue="OutboundSubscriptionRequestQueue"
ErrorQueue="error"
NumberOfWorkerThreads="1"
MaxRetries="5"
/>
<UnicastBusConfig
DistributorControlAddress=""
DistributorDataAddress=""
ForwardReceivedMessagesTo="">
<MessageEndpointMappings>
</MessageEndpointMappings>
</UnicastBusConfig>
我真的很感激任何帮助。我不一定希望能给你一个答案,只是向正确的方向轻推......现在我觉得我在黑暗中拍摄。
答案 0 :(得分:2)
听起来像nsb无法扫描nservicebus.core.dll类型。你可以验证它的存在,而不是阻止,并且log4net.dll部署在同一个目录中。