我正在尝试将临时发现添加到简单的WCF服务客户端设置中(目前通过控制台应用程序进行自托管)。在Windows 7上使用VS2010进行调试,并按照在线教程中找到的任何内容进行操作,但是发现客户端仍然找不到。不用说,如果我打开正确服务端点的客户端,则可以从该客户端访问服务。
服务代码:
using (var selfHost = new ServiceHost(typeof(Renderer)))
{
try
{
selfHost.Open();
...
selfHost.Close();
服务应用程序配置:
<?xml version="1.0"?>
<configuration>
<system.serviceModel>
<services>
<service name="TestApp.Renderer">
<host>
<baseAddresses>
<add baseAddress="http://localhost:9000" />
</baseAddresses>
</host>
<endpoint address="ws" binding="wsHttpBinding" contract="TestApp.IRenderer"/>
<endpoint kind="udpDiscoveryEndpoint"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceDiscovery/>
<serviceMetadata httpGetEnabled="True"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
客户端发现代码:
DiscoveryClient discoveryClient = new DiscoveryClient(new UdpDiscoveryEndpoint());
var criteria = new FindCriteria(typeof(IRenderer)) { Duration = TimeSpan.FromSeconds(5) };
var endpoints = discoveryClient.Find(criteria).Endpoints;
我的'endpoints'集合总是空的。我已经尝试了从调试器、命令行和管理员命令行中运行服务和客户端,但都没有用(当然,这些都是在本地机器上进行的,未来还需要在整个子网上运行)
希望能得到帮助 :-)