Я некоторое время работал в NSB, и все работало! Когда пришло время переместить его на серверы, у меня, похоже, есть архитектура дистрибьютора/рабочего для масштабируемости. Однако при запуске NSB на сервере-распространителе OR, это дает мне ошибку, которую я не могу понять или обойти:
Unhandled Exception: System.InvalidOperationException: Host doesn't support host
ing of multiple endpoints. Endpoint classes found: Namespace.EndpointCo
nfig, Namespace, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null,
Namespace.EndpointConfig, Namespace, Version=1.0.0.0, Culture
=neutral, PublicKeyToken=null You may have some old assemblies in your runtime d
irectory. Try right-clicking your VS project, and selecting 'Clean'.
at NServiceBus.Hosting.Windows.EndpointTypeDeterminer.AssertThatNotMoreThanOn
eEndpointIsDefined(List'1 endpointConfigurationTypes) in y:\BuildAgent\work\31f8
c64a6e8a2d7c\src\NServiceBus.Hosting.Windows\EndpointTypeDeterminer.cs:line 150
at NServiceBus.Hosting.Windows.EndpointTypeDeterminer.GetEndpointConfiguratio
nType(HostArguments arguments) in y:\BuildAgent\work\31f8c64a6e8a2d7c\src\NServi
ceBus.Hosting.Windows\EndpointTypeDeterminer.cs:line 81
at NServiceBus.Hosting.Windows.Program.Main(String[] args) in y:\BuildAgent\w
ork\31f8c64a6e8a2d7c\src\NServiceBus.Hosting.Windows\Program.cs:line 41
Я настраиваю свою конечную точку следующим образом:
public class EndpointConfig : IConfigureThisEndpoint, AsA_Server,
IWantCustomInitialization
{
Моя конечная точка выглядит так:
<add Assembly="HEC.Messages" Endpoint="hec.messageservice@servername" />
Команда, которую я запускаю для создания этой ошибки, - это...
E:\Services\NServiceBus.Host.exe /install ABC.messageservice
/username:domain\ouruser /password:value NServiceBus.Distributor
NServiceBus.Production NServiceBus.PerformanceCounters
Я понятия не имею, что я здесь делаю неправильно, или что вызывает ошибку в этом отношении. Я подозреваю, что моя конечная точка настроена неправильно, но я не знаю, что менять, я пробовал следовать инструкциям на сайте NSB, чтобы настроить дистрибьютора/сотрудника без везения.
Похоже, что хост находит две реализации EndPointConfig. Из сообщения об ошибке оба они кажутся одинаковыми и в том же пространстве имен.
Убедитесь, что в вашем коде имеется только одна реализация IConfigureThisEndpoint. Кроме того, убедитесь, что вы очистили каталог bin/runtime, чтобы убедиться, что хост не находит больше одного. Последнее, по-видимому, является более вероятной проблемой, основанной на вашем сообщении об ошибке.
Для меня проблема в том, что я переименовал/переместил пространства имен, и даже после clean
старые файлы сборки все еще зависали. Пришлось входить в папки /bin
и /obj
чтобы удалить их вручную.