1

アドレスを使用して WCF サービスを見つけたい。次のコードを書きました。

var uri = "http://bla-blabla.svc"
var obj = new DiscoveryClient(new UdpDiscoveryEndpoint());
        var findCriteria = new FindCriteria();
        findCriteria.Duration = TimeSpan.FromSeconds(10);
        findCriteria.Scopes.Add(new Uri(uri));
        var findResponse = obj.Find(findCriteria);

しかし、何も見つかりません...リンクを使用してWCFテストクライアントを使用して検索しようとすると、機能します...何が間違っていますか?

4

1 に答える 1

0

WCF テスト クライアントを使用する場合、検出機能は使用していません。これは、サービスの wsdl/metadata への古典的な呼び出しです。

ホストまたは構成に何かを追加することにより、ターゲットサービスを検出できるようにする必要があります。

コード

ServiceHost host = new ServiceHost(...); 
host.AddServiceEndpoint(new UdpDiscoveryEndpoint());
ServiceDiscoveryBehavior discovery = new ServiceDiscoveryBehavior();
host.Description.Behaviors.Add(discovery);
host.Open();

設定

<services>
       <service name = "MyService">
          <endpoint 
             kind = "udpDiscoveryEndpoint"
          />
          ...
       </service>
    </services>
    <behaviors>
       <serviceBehaviors>
          <behavior>
             <serviceDiscovery/>
          </behavior>
       </serviceBehaviors>
    </behaviors>

最初に、検索条件のスコープも削除します。

于 2013-01-24T14:07:40.110 に答える