2009-07-22 12 views
1

WCF経由でサービスを呼び出しており、一致しないネームスペースに問題が発生しました。WCFプロキシタイプがWCFサービスタイプと異なるネームスペースにあります

サービスはネームスペースMyProject.Commons.BuisnessObjectsにありますが、送信されるオブジェクトはWcfTestClientを通じて検証されています。

サービスでクライアントメソッド(新しいMyServiceClient()でこれを開始した後)を呼び出すと、このメソッドは正しいオブジェクトを返しますが、名前空間は異なります。

オブジェクトは現在Web.MyService.Objectになりました。私はキャストしようとしましたが、それは助けになりませんでした。

誰もこれを以前見たことがありますか?

ありがとう、Tine

答えて

1

これは予想される動作です。 Webサービスの仕組みです。彼らは異なるタイプであることを意図しています。

+0

OKですが、名前空間に一致する方法はありますか? MyProject.Commonc.BuisnessObjectsを返すMyService2があるので、回避策があるようです(別の名前空間を返す2つのサービスの違いはわかりません)。 –

+0

これらは異なるタイプです。すべてのクライアントに、サーバーが使用するのとまったく同じDLLを共有させない限り、同じ名前空間にそれらを入れないようにします。あなたは何を達成しようとしていますか? –

1

旧式のWeb参照ではなくサービス参照(WCF)を追加した場合は、これらの情報を一致させることができます。サービス参照を追加する前にオブジェクト型を定義する共有ライブラリへの参照をクライアントに追加すると、再利用型への参照を追加する際にオプションがあります。

+1

これは、クライアントとサービスの_implementation_の間に依存関係を作成したという重大な欠点があります。これがなければ、サービスのコントラクトに依存するだけです。 –

+0

私が提案していなかったサービスの実装と同じライブラリにオブジェクトを定義した場合のみ。 –

1

これは、サービスとクライアントで種類が共有されていないためです。したがって、クライアントはWeb.MyService名前空間にデータ構造を再作成します。

http://blog.walteralmeida.com/2010/08/wcf-tips-and-tricks-share-types-between-server-and-client.html

は、あなたがそこに詳細なシナリオとサンプルプロジェクトを見つけることができるサービス参照

を追加する前に、あなたのタイプを含む、あなたのアセンブリを参照することにより、クライアントとサービスの間で、データ構造タイプを共有する必要があり、これを回避するために、

関連する問題