2009-08-11 8 views
2

私は、SilverlightアプリケーションをWCFサービスを通じてサーバー側と通信しています。当初、私はSilverlightのメインアプリケーションのすべてを持っていましたが、私はいくつかのクラスを別のSilverlightクラスライブラリプロジェクトに組み入れたいと思っていました。しかし、これは私にいくつかの奇妙な問題をもたらしました...SilverlightのWCFサービスリファレンス

私は、WCF通信を行うクラスを別のプロジェクトに取り込みたいと考えました。だから:

  • 新しいプロジェクトを作成しました。 Silverlightクラスライブラリ
  • SilverlightアプリケーションからSilverlightクラスライブラリにクラスを移動しました
  • アプリケーションからサービス参照を削除しました。
  • クラスライブラリプロジェクトからのサービス参照を追加しました。

コンパイルがうまくいき、クラスライブラリのサービスにインテリセンスがあるので、問題はないようです。私はまた、サービスを更新し、クラスライブラリの更新を得ました。 しかし、次のエラーを与えるサービスコールを行うときに、それが失敗したアプリケーションの実行時に:

と、InvalidOperationExceptionがユーザーコードによって未処理だったの

で契約「MyServiceReference.IMyService」を参照して、デフォルトのエンドポイント要素を見つけることができませんでしたServiceModelクライアント構成セクション。これは、アプリケーションに設定ファイルが見つからなかったか、またはこの契約に一致するエンドポイント要素がクライアント要素内に見つからなかった可能性があります。

サービスを見つけることができないようですが、なぜですか?私はそれが私が1つを追加することができますように、Silverlightクラスライブラリからサービス参照を持つには問題はないはずだと思いますか?

答えて

2

サービス設定が見つかりません - WCFサービスの設定はどこにありますか?デフォルトでは、クライアントアプリケーション(EXE)には接続先のサービスエンドポイントを含むapp.configがあります。

デフォルトでは、クラスライブラリ(DLL)は独自の設定を持っていませんが、ホスティングアプリに依存して設定を提供しています。

このように、クライアントエンドポイントの設定が不足している可能性があります。おそらく、それはクラスライブラリプロジェクトのapp.configとして作成されていますが、実際には使用されていません。<system.serviceModel>セクションをメインアプリケーションの設定に移動する必要があります(私はSilverlight、しかし、どこに置くかは分かります)。

マーク

+0

Thx - それを解決しました!クラスライブラリプロジェクトからServiceReferences.ClientConfigコンテンツをコピーするか、同じサービス参照をアプリケーションプロジェクトに追加することで解決します。だから私はそれが別の場所で定義されているにもかかわらず、サービスの要求を処理するのはアプリケーションそのものだろうと思いますか?しかし、これはちょっとハッキリです。Class Libraryプロジェクトでサービス参照を使用するのは大丈夫ですか? – stiank81

+1

確かに、クラスライブラリにサービス参照があることは非常に望ましいことです。メインのアプリに設定を保存することを忘れないでください - それはすべてです:-) –

+0

良い:-)答えのためのThx! – stiank81

関連する問題