Asp.net mvc ASP.NET MVC中的CompositeType

Asp.net mvc ASP.NET MVC中的CompositeType,asp.net-mvc,wcf,composite-types,Asp.net Mvc,Wcf,Composite Types,我使用.NETFramework4.5。 创建了一个新的项目WCF,该项目已经有一个使用CompositeType的示例。 然后创建控制台和ASP.NET MVC 4应用程序。在两个项目中进一步添加了服务引用。 为什么在项目中ASP.NET MVC 4生成了一个空类(参考中)?如果删除服务接口中的CompositeType,则一切正常。在控制台应用程序中没有这样的问题,所有内容都正确创建。这是VS 2012中的一个已知问题。在修复可用之前,您可以使用以下解决方法使您的工作正常进行。看看这个博客

我使用.NETFramework4.5。 创建了一个新的项目WCF,该项目已经有一个使用CompositeType的示例。 然后创建控制台和ASP.NET MVC 4应用程序。在两个项目中进一步添加了服务引用。
为什么在项目中ASP.NET MVC 4生成了一个空类(参考中)?如果删除服务接口中的CompositeType,则一切正常。在控制台应用程序中没有这样的问题,所有内容都正确创建。

这是VS 2012中的一个已知问题。在修复可用之前,您可以使用以下解决方法使您的工作正常进行。看看这个博客

在VS 2012 MVC 4项目中,使用“添加服务引用”对话框向WCF服务添加服务引用时,是否发现一个空的reference.cs文件

以下是您可以采取的措施:

检查您的错误选项卡是否显示一些错误,如

警告1自定义工具警告:无法导入wsdl:portType

详细信息:运行WSDL导入扩展时引发异常:System.ServiceModel.Description.DataContractSerializerMessageCompactImporter

错误:类型“Newtonsoft.Json.Linq.JToken”是不受支持的递归收集数据协定。考虑修改集合“NeNethSoop.JSO.LINQ,JToken”的定义,以删除对自身的引用。

XPath到错误源://wsdl:definitions[@targetNamespace='1]http://tempuri.org/']/wsdl:portType[@name='IService1']

如果是,您可以使用以下解决方法:

  • 在添加服务引用对话框->[Advanced…]->引用程序集中的重用类型(默认选中)->选择非默认的“指定引用程序集中的重用类型”单选->确保从列表中排除Newtonsoft.Json.dll。现在尝试添加服务引用,看看是否成功

  • 或者,您可以在生成代理时删除此Newtonsoft.Json.dll的引用,并在代理生成完成后将其添加回