我的机器上正在运行 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 并输入 urlhttp://192.168.0.16:8080
或http://localhost:8080
. 到目前为止一切顺利。
然后我将我的客户端移动到另一台机器并启动它。
发现工作得很好,它返回服务器机器上端点的 url,但是在尝试连接时它说找不到端点。
此外,在 wcftestclient 内部。我无法连接,我尝试了两者http://192.168.0.16:8080
和http://192.168.0.16:8080/AnchorService
。
所以似乎发现端点在远程机器上工作,而不是服务端点?
知道我在哪里出错了吗?