.NETFramework4.5を使用しています。CompositeTypeを使用した例がすでにある新しいプロジェクトWCFを作成しました。次に、コンソールとASP.NETMVC4アプリケーションを作成しました。両方のプロジェクトにサービスリファレンスをさらに追加しました。プロジェクトでASP.NETMVC4が(参照で)空のクラスを生成したのはなぜですか?サービスインターフェイスでCompositeTypeを削除すると、すべて問題ありません。コンソールアプリケーションでは、そのような問題はなく、すべてが正しく作成されます。
1 に答える
これは VS 2012 の既知の問題です。修正が利用可能になる前に、次の回避策を使用して問題を解決できます。このブログをチェックしてください。
VS 2012 MVC 4 プロジェクトで、[サービス参照の追加] ダイアログを使用して WCF サービスにサービス参照を追加しているときに、空の reference.cs ファイルが見つかりましたか?
これについてあなたができることは次のとおりです。
エラータブに次のようなエラーが表示されているかどうかを確認してください...
警告 1 カスタム ツールの警告: wsdl:portType をインポートできません
詳細: WSDL インポート拡張機能の実行中に例外がスローされました: System.ServiceModel.Description.DataContractSerializerMessageContractImporter
エラー: タイプ 'Newtonsoft.Json.Linq.JToken' は、サポートされていない再帰的なコレクション データ コントラクトです。コレクション「Newtonsoft.Json.Linq.JToken」の定義を変更して、それ自体への参照を削除することを検討してください。
エラー ソースへの XPath: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:portType[@name='IService1']
その場合は、次の回避策を使用できます。
サービス参照の追加ダイアログで -> [詳細...] -> 参照されたアセンブリで型を再利用する (デフォルトでオン) -> デフォルトではない「指定された参照されたアセンブリで型を再利用する」ラジオを選択します -> Newtonsoft.Json を除外していることを確認してください。 dll をリストから選択します。今すぐサービス参照を追加してみて、成功することを確認してください。
または、プロキシの生成中にこの Newtonsoft.Json.dll の参照を削除し、プロキシの生成が完了した後に追加することもできます。