我尝试将服务引用添加到驻留在 ASP.NET MVC 4 项目的同一解决方案中的 WCF 服务,但失败了。我收到一条错误消息:
自定义工具错误:无法为服务引用“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 调用库项目,但我讨厌这样做,因为这是一个额外的步骤。有什么建议么?