私はちょうどwcfを学んでいて、とても基本的なことを理解できません。wcfエンドポイントの相対アドレス
IISでホストされたいWCFサービスを作成しています。ウェブアプリケーションのように、http://myhost/myapp/
などの独自のパスがあります。
私はVSでのWCFサービスプロジェクトを作成していますが、私はそれを記述した*.svc
ファイルを持っている 、その後、私はそのように単純なエンドポイントを定義します。
<endpoint address=""
binding="basicHttpBinding"
contract="wcf_service_auth.IPshService" />
その後、私のようなこのサービスを公開しますIIS Webアプリケーションを仮想ディレクトリに移動するには、名前がpsh_pub
であると仮定して、URL http://localhost/psh_pub/pshservice.svc/
を使用してサービスにアクセスできます。それは私にWCFの挨拶のページを示し、私にWSDLへのリンクを与えてくれます。これは私に正しいwsdlの説明を与えます。
これは問題ありません。
次のステップ - MEXエンドポイントを追加します。私は設定に追加します。
あまりにも大丈夫です<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange"/>
、エンドポイントはアドレスhttp://localhost/psh_pub/pshservice.svc/mex
でアクセス可能で、WcfTestClient.exe
は私にそのURLから正しい設定を提供します。
ここで問題が発生します。
IISでWCFサービスが動作しており、もう1つのエンドポイントを追加したいとします。例えば、それをnet.tcp
エンドポイントとします。 IISは、ポート808でnet.tcp
接続を受け入れるようにデフォルトで設定されており、私は自分のWebアプリケーションのプロパティにnet.tcp
プロトコルを追加している、と私はそのように私のサービスにエンドポイントを追加したい:
<endpoint address=""
binding="netTcpBinding"
contract="wcf_service_auth.IPshService" />
、今私のサービスは、URL net.tcp://localhost:808/psh_pub/pshservice.svc
でアクセス可能でなければならないとします。しかし、そうではありません。そして、すべての「ハウツー」とWeb上のマニュアルでは、私はそのような設定ファイルに完全なアドレスを指定する必要があることを伝えます:
<endpoint address="net.tcp://localhost:808/psh_pub/pshservice.svc"
binding="netTcpBinding"
contract="wcf_service_auth.IPshService" />
そして、私はそうするならば、それは動作します。しかし、別の仮想ディレクトリにサービスをホストする場合、私は設定を変更する必要があります。他のサーバーでホストしている場合は、configを変更する必要があります。私が複数のサーバでホストしている場合、私は持っているサーバと同じくらい多くの設定を維持する必要があります。
だから主な質問は以下のとおりです。
それのために絶対URLを指定せずにIISがホストするWCFサービスのnet.tcp
(またはhttps)エンドポイントを指定するWCFのいずれかの方法はありますか?
私はちょうど何をしたのか分かりませんが、空の "アドレス"パラメータを持つnet.tcpエンドポイントがあります。とにかく助けてくれてありがとう。 – pushist1y