1

非常に具体的な質問があります。1 つの WCF サービスを作成し、その名前のエンドポイントが複数ある場合、ブラウザを使用してアクセスするにはどうすればよいですか? また、 Add Service Reference を介してクライアントアプリケーションでアクセスするにはどうすればよいですか?

私の設定コードのように:

<services>
  <service name="MultipleEndpoint.SampleService" behaviorConfiguration="MultipleEndpoint.SampleService">
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:55052/SampleService.svc"/>
      </baseAddresses>
    </host>
    <endpoint address="/basic" binding="basicHttpBinding" contract="MultipleEndpoint.ISampleService" bindingConfiguration="basicBinding" >
    </endpoint>
    <endpoint address="/wsHttp" binding="wsHttpBinding" contract="MultipleEndpoint.ISampleService" bindingConfiguration="wsBinding" >          
    </endpoint>
    <endpoint address="/webHttp" binding="webHttpBinding" contract="MultipleEndpoint.ISampleService" behaviorConfiguration="REST">
    </endpoint>        
  </service>
</services>

今、私がそれを使用してそれにアクセスしようとしたとき

http://localhost:55052/SampleService.svc/basic or 
http://localhost:55052/SampleService.svc/wsHttp 

それは私にページ/リソースが見つかりませんIE標準エラーメッセージを与えます...同時に、このタイプのURLをクライアントアプリケーションのサービス参照として追加する方法を知りたいですか?

4

1 に答える 1

0

これらのサービス アドレスは異なり、厳密に閲覧可能である必要はありません。つまり、 http://localhost:55052/SampleService.svc/basicのようなエンドポイントのサービスを閲覧することはできません。これらのアドレスは、通信のエンドポイントを区別するために使用されます

サービスの wsdl を見ると、それらのエンドポイントのすべてのアドレスがそこに指定されています。

「サービス参照の追加」を使用してサービスのプロキシを作成すると、すべてのエンドポイントが構成に個別に作成されます..

<client>
    <endpoint address="http://localhost:54671/Service1.svc/basic"
            binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService1"
            contract="ServiceReference1.IService1" name="BasicHttpBinding_IService1" />

    <endpoint address="http://localhost:54671/Service1.svc/ws" binding="wsHttpBinding"
            bindingConfiguration="WSHttpBinding_IService1" contract="ServiceReference1.IService1"
            name="WSHttpBinding_IService1">
    </endpoint>
    ...
</client>

nameたとえば、基本的な http エンドポイントを使用してサービスと通信する場合は、ctor で対応するエンドポイント構成を渡すことで、そのためのプロキシを作成できます。

元。

// this will uses the basic http endpoint.
Service1Client client = new Service1Client("BasicHttpBinding_IService1");
于 2012-07-12T15:53:55.667 に答える