WCFサービスで単純なメソッドのみを使用すると、すべてが正常に機能します。ただし、次の方法を含めると、問題が発生します。
[OperationContract]
public List<KeyValuePair<string, string>> GetAllAccounts()
{
return AccountBusiness.GetAllAccounts();
}
別のプロジェクトからサービスを参照すると、次のエラーが発生します。
警告5カスタムツールの警告: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 ='NodeService'] C:\ inetpub \ wwwroot \ MyclientProject \ Service References \ NodeService \ Reference.svcmap 1 1 MyClientNode
上記のメソッドを削除し、参照を再コンパイルして更新すると、正常に機能します。しかし、上記のメソッドを追加すると、常にこの警告が表示されます。
私が見つけた提案の1つは、VisualStudio2012をアンインストールしてVisualStudio2010を修復することでした。それはしたくありません。
もう1つは、「参照されているすべてのアセンブリでタイプを再利用する」のチェックを外すことを提案しましたが、これはメソッドのシグネチャを台無しにし、使用できません。