use*_*001 15 .net wcf wsdl exception-handling service-reference
我尝试将服务引用添加到WCF服务,该服务驻留在ASP.NET MVC 4项目的同一解决方案中但失败了.我收到一个错误说:
自定义工具错误:无法为服务引用"XXX"生成代码.有关详细信息,请查看其他错误和警告消息.根警告是:
警告9自定义工具警告:无法导入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='IXXX'] C:\ Projects ...\Reference.svcmap 1 1 pqrt.web
如果我从服务合同中删除了数据合同,那就有效了.我还尝试将服务引用添加到其他项目,如库项目甚至ASP.NET MVC 3项目,这一切都有效.我想知道这是否是ASP.NET MVC 4的一个问题?我正在使用VS 2012 RC.
我能想到的一个解决方法是将服务引用添加到库项目,然后从ASP.NET MVC 4调用库项目,但我讨厌这样做,因为这是一个额外的步骤.有什么建议?
Sti*_*tif 14
如果你想保留对Newtonsoft.Json的引用,你也可以将Newtonsoft.Json从程序集列表中删除,以检查数据交换的重用.
为此:右键单击服务引用,然后单击"配置服务引用"...
在"重用引用程序集中的类型"下,选择第二个选项以指定在哪些程序集中搜索重用类型并选择所有程序集但取消选中Newtonsoft.Json
您真的想返回任意深度的树中的节点吗?
如果是这样,则不返回 JToken,而是首先将其转换为字符串以获取 Json 文本。在客户端,您可以Jtoken.Parse(yourstring)返回 JToken。
如果没有,则考虑传回Value<T>并让序列化处理 T。