Я пытаюсь использовать функцию обнаружения в WCF, используя http://msdn.microsoft.com/en-us/library/dd456783(v=VS.100).aspx в качестве отправной точки. Он отлично работает на моей машине, но затем я хотел запустить службу на другой машине. Служба была обнаружена правильно, но имя хоста найденной службы всегда "localhost", что, конечно, не очень полезно
Конечная точка обслуживания:
var endpointAddress = new EndpointAddress(new UriBuilder { Scheme = Uri.UriSchemeNetTcp, Port = port}.Uri);
var endpoint = new ServiceEndpoint(ContractDescription.GetContract(typeof(IServiceInterface)), new NetTcpBinding (), endpointAddress);
Клиент:
static EndpointAddress FindServiceAddress<T>()
{
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
DiscoveryClient discoveryClient = new DiscoveryClient(new UdpDiscoveryEndpoint());
// Find endpoints
FindResponse findResponse = discoveryClient.Find(new FindCriteria(typeof(T)));
Console.WriteLine(string.Format("Searched for {0} seconds. Found {1} Endpoint(s).",stopwatch.ElapsedMilliseconds / 1000,findResponse.Endpoints.Count));
if (findResponse.Endpoints.Count > 0)
{
return findResponse.Endpoints[0].Address;
}
return null;
}
Должен ли я просто установить для хоста значение System.Environment.MachineName?