问题描述
|
一整套使用NServiceBus的集成服务已经丢到我的腿上了(不幸的是,我没有参与最初的实现,而编写代码的人已经离开了)。
这些服务在我们的开发和测试环境中运行良好;但是我无法让它们在我们的生产环境中运行。我得到错误
NServiceBus.Unicast.Transport.CompletionMessage was not registered in the serializer.
Check that it appears in the list of configured assemblies/types to scan.
我已经检查了服务器上的配置文件,它们几乎是相同的;特别是“ 1”和“ 2”块是相同的。两种环境之间的主要区别在于,在生产环境中,Web /应用程序/数据库层位于单独的服务器上,而在测试环境中,它们都位于同一服务器上。但是,集成服务调用仅是从应用程序层进行的,即使在生产环境中,应用程序层和集成服务也位于同一服务器上(至少现在是这样),因此我不确定这应该有所作为。
我确实下载了文档(.chm文件),但是我单击的每个主题都说“断开的链接”。
我还阅读了包括此问题在内的几个问题和答案,但是由于代码在我们的测试环境中可以正常工作,所以我不太愿意对其进行更改。
我们正在按以下方式配置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>
我将非常感谢您的协助。我并不一定要给我答案,只是向正确的方向轻推...现在,我感觉好像在黑暗中射击。
解决方法
听起来像nsb无法扫描nservicebus.core.dll中的类型。您是否可以验证其当前存在但未被阻止,以及log4net.dll是否已部署在同一目录中。