如果我在 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
如果我删除上面的方法,重新编译并更新引用,那么它工作正常。但是当我添加上述方法时,我一直收到这个警告。
我发现的一个建议是卸载 Visual Studio 2012 并修复 Visual Studio 2010。我不想这样做。
另一个建议取消选中“在所有引用的程序集中重用类型”,但这会弄乱方法签名并且不可用。