2012-04-02 7 views
0

私はWCFサービスを作成しています。最初はWCFサービスライブラリプロジェクトが1つあり、このライブラリを参照していたコンソールプロジェクトが1つありました。また、サービスライブラリに有効なApp.Configファイルがある限り、クライアントプロジェクトで「サービス参照の追加」を使用したときはうまくいきました。"add service reference"オプションを使用して、WCFで自己ホストサービスを追加することはできますか?

ただし、サービスライブラリとコンソールホストを1つのコンソールプロジェクトに結合したいと考えています。結局のところ、以前のコンソールプロジェクトはかなりシンプルでした。しかし、ここで問題が発生します。「サービス参照の追加」を選択し、新しいコンソールプロジェクトのApp.configファイルで定義したエンドポイントを指定すると、サービス参照が見つかりません。私はサービスを追加するときにwcfsvchost.exeによってサービスがホストされないため、サービス参照機能がオンになっています(そして、それは意味をなさないと思います)。しかし、私はそれを働かせる方法を考えることができません。私のサービスがコンソールでホストされている単一のプロジェクトであれば、サービスリファレンスをどのように追加するのですか?

+0

**もちろんあります!**なぜあなたはお尋ねしますか?サービスを起動して実行する必要があります。その後、そのサービスに対して 'Add Service Reference'を絶対に行うことができます。結局のところ:それはちょうどWCFサービスです - ホストされている方法は、それを呼び出すクライアントに絶対に無関係です..... –

+0

@ marc_sありがとう。私は1つのことを言いました:私は元のサービスライブラリ(wcfsvchostがこのサービスを実行させるように)に "サービス参照を追加"しようとしましたが、これは全く同じファイルとapp.configを組み合わせたコンソールです。しかし、私はこのライブラリをアンロードし、複合コンソールを実行しました(私はこれらの2つのサービスが同じになるため、以前に生成されたサービス参照も新しいものとして使用できると仮定します)、クライアントは "エンドポイントを見つけることができません"と言います。私は生成されたサービス参照で変更する必要があるものがあるからだと思いますが、正確には何ですか? – tete

答えて

0

最も簡単な方法は、WCFサービスを実行してサービス参照を生成し、それを単一のアプリケーションに結合することです。 app.configのアドレスを変更するだけです。しかし、app.configのサーバー部分ではなくクライアント部分のアドレスを変更する必要があるので、これに注意してください。

しかし、このアプローチは、サービスデータ契約を変更してサービス参照を再生成することに決めた場合に、将来的には維持することが難しくなります。サービス参照をアセンブリにラップし、代わりにアセンブリを使用することを検討してください。これにより、必要に応じていつでもサービス参照を再生成することができます。

+0

ご協力ありがとうございます。あなたは「app.configのアドレスを変更する」ためにどのような変更を加えるべきか、具体的にお考えですか?私のサービスライブラリから生成されたサービス参照を試したので、基本的には私の結合されたコンソールプロジェクトと同じ設定を使用しています。しかし、サービスライブラリと全く同じサービスをホストするはずの複合コンソール(wcfsvchost.exe。がこのバージョンをホストしないようにサービスライブラリをアンロードしました)を実行すると、私のクライアントはエンドポイントが見つかりません。私はそれが異なることがあると私は推測していると私は変更する必要があります。しかし、私はちょうど何かを把握することができません – tete

+0

@tete質問にあなたの結合app.configを投稿できますか?感性情報を削除することができます。また、WCFサービスが起動され、実行される前に要求を送信している可能性もあります。 –

+0

を確実に実行してください。元の投稿の更新をご覧ください。 – tete

関連する問題