WCF Discovery .NET 4:配置/编程定义问题

Dav*_*vid 11 .net c# wcf .net-4.0 wcf-binding

我有一个发现启用WCF服务,现在我想连接客户端.

问题:当我使用udp端点(1.)并尝试以编程方式发现服务时,它可以工作......当我使用App.config方法(2.)时它不会(错误:没有发现端点).

对我而言,两种解决方案的"udp发现结果"似乎应该相同,但遗憾的是它不是......

1.以编程方式处理(工作):

码:

        DiscoveryClient discClient = new DiscoveryClient("udpDiscoveryEndpoint");
        FindCriteria fCriteria = new FindCriteria(typeof(IAlarmServer));
        fCriteria.Duration = TimeSpan.FromSeconds(5);
        fCriteria.MaxResults = 1;
        FindResponse fResponse = discClient.Find(fCriteria);

        EndpointAddress address = fResponse.Endpoints[0].Address;
        Console.WriteLine("Address found: " + address.ToString());
Run Code Online (Sandbox Code Playgroud)

配置:

<system.serviceModel>
  <client>
     <endpoint name="udpDiscoveryEndpoint" kind="udpDiscoveryEndpoint" />
  </client>
</system.serviceModel>
Run Code Online (Sandbox Code Playgroud)

2.使用App.config和"集成到端点"方法的方法(不起作用!):

码:

        var Proxy = new AlarmServerClient("IAlarmServer"); // Default client generated by Visual Studio
        Proxy.SomeMethod(); // throw no endpoints discovered exception
Run Code Online (Sandbox Code Playgroud)

配置:

<standardEndpoints>
  <dynamicEndpoint>
    <standardEndpoint name="discoveryDynamicEndpointConfiguration">
      <discoveryClientSettings>
        <findCriteria duration="00:00:05" maxResults="1">
          <types>
            <add name="AlarmServiceRef.IAlarmServer"/>
          </types>
        </findCriteria>
        <endpoint kind="udpDiscoveryEndpoint"/>
      </discoveryClientSettings>
    </standardEndpoint>
  </dynamicEndpoint>
</standardEndpoints>
Run Code Online (Sandbox Code Playgroud)

配置:

  <client>
     <endpoint binding="basicHttpBinding" bindingConfiguration="DefaultBasicHttpBinding" contract="AlarmServiceRef.IAlarmServer" name="IAlarmServer"
            kind="dynamicEndpoint"
            endpointConfiguration="discoveryDynamicEndpointConfiguration"/>
  </client>
Run Code Online (Sandbox Code Playgroud)

任何想法为什么会这样?

Roy*_*tus 0

您不能只向您的客户端项目添加服务引用吗?它将为您生成配置。