1

私も WCF を学んでおり、Web サービスは初めてで、非常に基本的な質問があります。私を甘やかしてください!私が使用している本の例 (Learning WCF) では、サービスのベース アドレス (new Uri("http://localhost:8000/HelloIndigo)) を指定する ServiceHost インスタンスを作成しました。サービスを実装するライブラリ. 次に、AddServiceEndpoint() の呼び出しが最後の引数である「HelloIndigoService」として指定された相対アドレスで行われます. 後者は、実際にサービス コントラクトを実装していますか? (問題のクラスにはその名前が付けられています。) しかし、その引数は「アドレス」と呼ばれており、非常に混乱しています。助けてください。

4

1 に答える 1

3

セルフホスティングの場合は、次のいずれかを使用できます。

  • エンドポイント内の完全で明示的なエンドポイント アドレス。

    http://yourServer:8888/YourService/SomeMethodName
    

    したがって、エンドポイントは完全な HTTP アドレスを定義します

また:

  • そのサービスのすべてのエンドポイントのベースとなるサービスのベース アドレスを定義すると、エンドポイント自体はそこからの相対アドレスのみを定義できます。

したがって、あなたの場合、ベースアドレスはhttp://localhost:8000/HelloIndigo- すべてのサービスエンドポイントがそのアドレスの「下」になります。

エンドポイントは の相対アドレスを定義するHelloIndigoServiceため、これら 2 つを組み合わせると、最終的な完全なアドレスは次のようになります。

  http://localhost:8000/HelloIndigo/HelloIndigoService

これは、自己ホスティングServiceHostでのみ機能します (クラスを作成して使用するために開くホスト アプリケーションがある場合)。

IIS を使用してサービスをホストする場合、ベース アドレスは使用されず、解釈されません。代わりに、*.svcファイルが存在する仮想ディレクトリ (IIS 内) がサービス エンドポイントのアドレスを定義します。

于 2011-12-07T05:50:15.267 に答える