5

このプロジェクトは、社内の WCF サービスと通信する標準のありふれたASP.NET MVC 3 アプリケーションです。私たちの ASP.NET MVC アプリケーションは、一般的な JSON.NET ライブラリなど、いくつかの外部ライブラリを参照しています。

この問題は、JSON.NET ライブラリがプロジェクト内の参照である場合にのみ発生します。WebForms とWindows Formsプロジェクトでこの問題を再現しようとしましたが、同じことが起こりました。

WCF サービスにサービス参照を追加し、JSON.NET がプロジェクトの参照である場合、サービス参照は次のように構築されます。

プロジェクトで JSON.NET が参照されている場合 - Request/Response クラスと、Id1 や IdSpecified などの奇妙なプロパティに注目してください。

JSON.NET を使用

しかし、JSON.NET への参照を削除し、サービス参照を更新すると、次のように希望どおりにビルドされます。

プロジェクトで JSON.NET が参照されていない場合

JSON.NET なし

...

一体何がこれを引き起こすのでしょうか?JSON.NET は WCF プロジェクトで参照されていないため、何らかの混同がある可能性は非常に低いと思います。

役立つ情報:

  • 「参照されたアセンブリで型を再利用する」などのサービス参照の追加ダイアログでさまざまなオプションを確認しようとしましたが、同じことが起こります
  • ビジュアル スタジオ 2010
  • WCF サービスはデータ アクセスに Entity Framework を使用します
4

1 に答える 1

0

サービス参照を追加すると、WCF は既定で、他の方法で生成されるクラスと一致するアセンブリからクラスを再利用します。

これは、たとえば、サービスとクライアントの両方を開発し、両方のプロジェクトで参照されるすべてのクラスを含むクラス ライブラリが必要な場合に発生します。これにより、.NET の既定の型 (配列、リスト、DateTime など) が使用されるようになります。

このデフォルトの動作は、次のように変更できます。

  1. 「サービス参照の追加」を選択した後、「詳細」ボタンをクリックします

  2. 「指定された参照アセンブリで型を再利用する」を選択します

  3. 使用しないアセンブリを除いて、すべてのアセンブリをチェックします

システム アセンブリをチェックしない場合、すべての .NET 型 (配列、リストなど) のプロキシ ファイルにも新しい型が生成されることに注意してください。

于 2014-01-08T19:50:25.813 に答える