3

我的机器上正在运行 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:8080http://localhost:8080. 到目前为止一切顺利。

然后我将我的客户端移动到另一台机器并启动它。

发现工作得很好,它返回服务器机器上端点的 url,但是在尝试连接时它说找不到端点。

此外,在 wcftestclient 内部。我无法连接,我尝试了两者http://192.168.0.16:8080http://192.168.0.16:8080/AnchorService

所以似乎发现端点在远程机器上工作,而不是服务端点?

知道我在哪里出错了吗?

4

0 回答 0