前回
【WCF】 VS2008のテンプレートで作成したWCFサービスライブラリは、なぜ管理者権限で動作させなくても良いのか?
http://blogs.wankuma.com/trapemiya/archive/2009/02/10/167913.aspx
と同様に、VS2008でWCFサービステンプレートを使用せずにWCFサービスを作成した時の話です。
前回、netshコマンドを使って無事にWCFサービスホストおよびWCFテストクライアントが自動で起動するようになったのだが、WCFテストクライアントが以下のメッセージを出して自動的にWCFサービスを見つけてくれない。
「WCF Service Host cannot find any service metadata」
ちなみにmexを公開しているurlを手動で入力してサービスを追加すると、問題なく追加される。どうやら、WCFテストクライアントがサービスを見つけられないだけのようだ。
なぜだろう? mexのエンドポイントがいるのかと思って追加してみたが効果なし。どうやら関係ないようだ。
いろいろ試した結果、解決した。App.configに<BaseAddresses>が必要だったのだ。
<services>
<service behaviorConfiguration="NewBehavior" name="HogeHogeService.Service1">
<host>
<baseAddresses>
<add baseAddress = "http://localhost:8000/HogeHogeService/" />
</baseAddresses>
</host>
・
・
・
</services>
どうやらWCFテストクライアントは、<BaseAddresses>に書かれたベースアドレスを元にWCFサービスを自動的に探しているようだ。<BaseAddresses>がないとどこを探していいのかわからず、上記のエラーメッセージを出していたのだろう。