NServiceBus.Unicast.Transport.CompletionMessage未在序列化程序中注册

时间:2011-06-23 20:29:09

标签: nservicebus

使用NServiceBus的一套集成服务已被放弃在我的膝盖上(不幸的是,我没有参与原始实现,编写代码的人已离开)。

这些服务在我们的开发和工作中运作良好。测试环境;但我不能让它们在我们的生产环境中运行。我收到了错误

NServiceBus.Unicast.Transport.CompletionMessage was not registered in the serializer. 
Check that it appears in the list of configured assemblies/types to scan.

我检查了服务器上的配置文件,它们几乎相同;特别是MsmqTransportConfigUnicastBusConfig块是相同的。两种环境之间的主要区别在于,在生产中,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>

我真的很感激任何帮助。我不一定希望能给你一个答案,只是向正确的方向轻推......现在我觉得我在黑暗中拍摄。

1 个答案:

答案 0 :(得分:2)

听起来像nsb无法扫描nservicebus.core.dll类型。你可以验证它的存在,而不是阻止,并且log4net.dll部署在同一个目录中。