2012-08-22 11 views
5

के साथ डब्ल्यूसीएफ सेवा का संदर्भ देते समय "रिकर्सिव संग्रह डेटा अनुबंध" प्राप्त करना यदि मैं अपनी डब्ल्यूसीएफ सेवा में केवल सरल तरीकों का उपयोग करता हूं, तो सब कुछ ठीक काम करता है। हालांकि, अगर मैं निम्न विधि में शामिल हैं, कोई समस्या होती है:थोड़ा जटिल विधि

[OperationContract] 
public List<KeyValuePair<string, string>> GetAllAccounts() 
{ 
    return AccountBusiness.GetAllAccounts(); 
} 

मैं जब एक अन्य परियोजना से सेवा को संदर्भित इस त्रुटि मिलती है:

Warning 5 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='NodeService'] C:\inetpub\wwwroot\MyclientProject\Service References\NodeService\Reference.svcmap 1 1 MyClientNode

अगर मैं विधि ऊपर निकालने के लिए, पुन: संयोजित और अद्यतन संदर्भ, तो यह ठीक काम करता है। लेकिन जब मैं उपर्युक्त विधि जोड़ता हूं, तो मुझे लगातार यह चेतावनी मिलती है।

मुझे मिला एक सुझाव विजुअल स्टूडियो 2012 को अनइंस्टॉल करना और विजुअल स्टूडियो 2010 की मरम्मत करना था। मैं ऐसा नहीं करना चाहता।

एक अन्य suggested "सभी संदर्भित असेंबली में पुन: उपयोग प्रकार" को अनचेक करने के लिए, लेकिन यह विधि हस्ताक्षर को गड़बड़ कर देता है और उपयोग करने योग्य नहीं है।

उत्तर

7

जैसा कि यह निकला, त्रुटि इस तथ्य के कारण हुई थी कि मेरे पास NuGet से स्थापित एक Microsoft वेब API पैकेज था, जिसमें Json.NET शामिल था। इसे अनइंस्टॉल करने के बाद, यह ठीक काम करता है।

यह आपके लिए जवाब हो सकता है - यदि नहीं, तो आपने कौन से अन्य पैकेज स्थापित किए हैं (जिन्हें आपको आवश्यकता नहीं है) देखें और उन्हें हटा दें।

+11

आपको पैकेज को हटाने की ज़रूरत नहीं है, अब आप उन्हें सेवा में उपयोग कर सकते हैं: http://nirlevy.blogspot.co.il/2012/08/cannot-import-wsdl-porttypedetail.html –

+1

निर , यह आश्चर्यजनक रूप से सहायक था। धन्यवाद! – benjy

1

सर्वर पर स्थापित NewtonSoft.Json लाइब्रेरी एक ही नहीं है जो क्लाइंट पर NuGet से स्थापित है। यही कारण है कि सेवा संदर्भ इसका पुन: उपयोग करने में असमर्थ है।

इस मामले में बस 'निर्दिष्ट संदर्भित असेंबली में पुन: उपयोग प्रकार' पर क्लिक करें, सबकुछ जांचें लेकिन न्यूटॉन्सॉफ्ट.जेसन असेंबली और पुनः उत्पन्न करें।

सेवा संदर्भ अब त्रुटियों के बिना उत्पन्न होगा।

संबंधित मुद्दे