I tried to add a service reference to a WCF service that resides in the same solution from an ASP.NET MVC 4 project but failed. I got a error saying:
Custom tool error: Failed to generate code for the service reference
'XXX'. Please check other error and warning messages for details. The
root warning is:
Warning 9 Custom tool warning: Cannot import wsdl:portType Detail: An
exception was thrown while running a WSDL import extension:
System.ServiceModel.Description.DataContractSerializerMessageContractImporter
Error: Type 'Newtonsoft.Json.Linq.JToken' is a recursive collection
data contract which is not supported. Consider modifying the
definition of collection 'Newtonsoft.Json.Linq.JToken' to remove
references to itself. XPath to Error Source:
//wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:portType[@name='IXXX']
C:Projects...Reference.svcmap 1 1 pqrt.web
If I removed the data contracts from the service contract, it worked. I also tried to add the service reference to other projects like a library project or even an ASP.NET MVC 3 project, it all worked. I was wondering if this was an issue with ASP.NET MVC 4? I was using VS 2012 RC.
One workaround I can think of is to add the service reference to a library project and then call the library project from ASP.NET MVC 4, but I hate to do that since it's an extra step. Any suggestions?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…