NServiceBus.Unicast.Transport.CompletionMessage не был зарегистрирован в сериализаторе
Набор интеграционных сервисов, использующих 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/database находятся на отдельных серверах, тогда как в среде тестирования они все находятся на одном сервере. Однако вызовы службы интеграции выполняются только с уровня приложения, и даже в рабочем состоянии уровень приложений и службы интеграции находятся на одном сервере (по крайней мере, на данный момент), поэтому я не уверен, что это должно иметь значение.
Я загрузил документацию (файл.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>
Я был бы очень признателен за любую помощь. Я не обязательно хочу получить ответ, просто толчок в правильном направлении... сейчас я чувствую, будто стреляю в темноте.
1 ответ
Похоже, что nsb не может сканировать nservicebus.core.dll на наличие типов. Можете ли вы проверить, что он присутствует, а не заблокирован и что log4net.dll развернут в том же каталоге.