Область действия WCF по умолчанию имеет значение tempuri, несмотря на то, что она явно и программно добавлена в service

#.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:

Как я догадался, вы могли бы также добавить конечную точку метаданных в свой сервис? Если это так, вам следует также добавить поведение области в свою конечную точку метаданных, чтобы вы могли обнаружить службу с правильной областью.

Приветствия.