#.net #wcf #scope
#.net #wcf #область
Вопрос:
На стороне службы у меня есть узел службы, который запускается в контексте службы Windows. Кажется, все идет нормально: служба запускается и может быть обнаружена. Но когда я иду проверять область на клиенте, которую я явно добавил в службу (независимо от значения) Я получаю следующее значение: {urn: http://tempuri.org/:MyServiceInterface}
Код обнаружения на стороне службы выглядит следующим образом:
var udpDiscoveryEndpoint = new UdpDiscoveryEndpoint();
//
// Create a scope unique to this machine for filtering purposes and add it to the discovery behavior
//
var endpointDiscoveryBehavoir = new EndpointDiscoveryBehavior();
endpointDiscoveryBehavoir.Scopes.Add( new Uri( address "/disco" ) );
udpDiscoveryEndpoint.Behaviors.Add( endpointDiscoveryBehavoir );
//
// Add discovery endpoint
//
_serviceHost.AddServiceEndpoint( udpDiscoveryEndpoint );
ServiceDiscoveryBehavior serviceDiscoveryBehavior = new ServiceDiscoveryBehavior();
_serviceHost.Description.Behaviors.Add( serviceDiscoveryBehavior );
Комментарии:
1. Я добавлял EndPointDiscoveryBehavoir в UdpDiscoveryEndpoint вместо конечной точки службы.
2. Нет, это тоже было не так. Это как-то связано либо с запуском ее как службы Windows, либо с вызовом клиента обнаружения из тестовой среды … тьфу.
3. как насчет изменения пространства имен service contract?
Ответ №1:
Как я догадался, вы могли бы также добавить конечную точку метаданных в свой сервис? Если это так, вам следует также добавить поведение области в свою конечную точку метаданных, чтобы вы могли обнаружить службу с правильной областью.
Приветствия.