4

これは簡単な質問です。

WCFTestClientツールを使用して特定のエンドポイントに接続できません。サービス設定があります。このような:

<service name="CO.Services.SvcTest">
        <endpoint address="ep1" binding="basicHttpBinding" bindingConfiguration=""
          bindingNamespace="http://api.CO.com/Services/Tester/ep1"
          contract="CO.Services.ISvcTest" />
        <endpoint address="ep2" binding="basicHttpBinding" bindingConfiguration=""
          bindingNamespace="http://api.CO.com/Services/Tester/ep2"
          contract="CO.Services.ISvcTest_v2" />
        <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration=""
          name="" contract="IMetadataExchange" />
      </service>

' http:// localhost:2659 / Tester.svc / ep1 'または' http:// localhost:2659 / Tester.svc / ep2 'を渡すと、「メタデータを取得できません...」と表示されますが、'を渡すとhttp:// localhost:2659 / Tester.svcそれは機能し、両方のエンドポイントを表示します。

誰かが私が欠けているものを知っていますか?

EDIT1:これも可能ですか?

4

1 に答える 1

3

それは正しい振る舞いです。

WCFでは、サービスのメタデータはデフォルトでサービスのベースアドレスで提供されます。

カスタムプロセスでサービスをホストしている場合は、ベースアドレスのURLをカスタマイズしたり、baseAddresses構成セクションを使用して新しいURLを追加したりすることもできます。IISでサービスをホストしている場合(これはあなたの場合のようです)、ベースアドレスは常に.svcファイルのURLです。

編集: 2つの完全に別個のエンドポイントが必要な場合は、契約ごとに1つずつ、 2つのサービス実装を作成し、構成ファイル内の異なる要素でそれらを構成する必要があります。エンドポイントが同じサービスの一部である限り、メタデータはサービスのベースアドレス(この場合は.svcファイルのURL)からのみ取得できます。

于 2012-01-12T11:49:38.197 に答える