我的计算机上运行了WCF服务。此服务在system.servicemodel:
下的app.config文件中具有以下配置<client />
<services>
<service name="AnchorWcfService.AnchorService" behaviorConfiguration="serviceBehavior">
<endpoint address="AnchorService" contract="AnchorWcfService.IAnchorService" binding="wsHttpBinding" bindingConfiguration="TransportSecurity" />
<endpoint address="mex" contract="IMetadataExchange" binding="mexHttpBinding" />
</service>
</services>
<bindings>
<wsHttpBinding>
<binding name="TransportSecurity" maxReceivedMessageSize="5000000">
<readerQuotas maxStringContentLength="5000000" maxDepth="128" maxArrayLength="5000000" />
<security mode="None">
</security>
</binding>
</wsHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="serviceBehavior">
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
从我的代码中,我像这样启动主机:
serviceHost = new ServiceHost(typeof (AnchorService), new Uri("http://192.168.0.16:8080/"));
serviceHost.Open();
本地计算机的IP地址当然是192.168.0.16。
此外,我还从代码中添加了以下端点以启用WS-Discovery:
var discoveryBehavior = new ServiceDiscoveryBehavior();
discoveryBehavior.AnnouncementEndpoints.Add(new UdpAnnouncementEndpoint());
serviceHost.Description.Behaviors.Add(discoveryBehavior);
serviceHost.AddServiceEndpoint(new UdpDiscoveryEndpoint());
现在,从本地机器发现和连接工作就好了。我还可以使用wcftestclient按预期连接到服务并输入网址http://192.168.0.16:8080
或http://localhost:8080
。所以到目前为止一切顺利。
然后我将我的客户端移动到另一台机器并启动它。
该发现工作正常,它返回服务器计算机上端点的url,但在尝试连接时表示找不到端点。
另外,在wcftestclient中。我无法连接,我同时处理了http://192.168.0.16:8080
和http://192.168.0.16:8080/AnchorService
。
因此,发现端点似乎是从远程计算机工作,而不是服务端点?
知道我哪里错了吗?