前回のエントリーでgsf_zero1さんからコメントをもらいました。
WCFサービスライブラリのクライアントを作成する - プログラマーな日々
同じソリューション内にWCFサービスライブラリが存在している場合は、「サービス参照の追加」画面で「探索」ボタンをクリックしても追加できますよ。:)
Hostアプリを起動しなくて良いので結構便利です。
そこで今回はHostアプリを削除して試して見ます。
Hostアプリなしで試してみる。
サービス参照の追加
- ソリューションエクスプローラーでプロジェクト「Client」を選択し、コンテキストメニューで「サービス参照の追加」をクリックします。すると以下のようなダイアログが表示されます。
- [アドレス]に"http://localhost:8000/WCFSampleService"を入力して、[移動]をクリックしてもWCFサービスが起動していないので、サービス情報は取得できません。
- 今度は[探索]をクリックしてみます。サービス参照が見つかりました。
- [OK]をクリックすると、WCFサービスライブラリのメタデータから取得したIService1のコントラクト情報と、IService1を利用できるクライアントのクラス、app.configが自動的に生成されます。
- app.config
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <bindings> <wsHttpBinding> <binding name="WSHttpBinding_IService1" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false"> <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" /> <security mode="Message"> <transport clientCredentialType="Windows" proxyCredentialType="None" realm="" /> <message clientCredentialType="Windows" negotiateServiceCredential="true" algorithmSuite="Default" /> </security> </binding> </wsHttpBinding> </bindings> <client> <endpoint address="http://localhost:8000/WCFSampleService/Service1/" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IService1" contract="ServiceReference1.IService1" name="WSHttpBinding_IService1"> <identity> <dns value="localhost" /> </identity> </endpoint> </client> </system.serviceModel> </configuration>
ソリューションをマルチスタートアップに設定する。
以下のように設定します。
設定方法については、こちらを参照してください。
Visual Studioソリューションのマルチスタートアップが便利 - プログラマーな日々
Visual Studioでは、実行時に複数のプロジェクトを起動することができます。 ...