wpf - इस डब्ल्यूसीएफ त्रुटि का क्या अर्थ है: "कस्टम टूल चेतावनी: wsdl आयात नहीं कर सकता: पोर्ट टाइप"




wcf service-reference (9)

मैंने अपने समाधान में एक डब्ल्यूसीएफ सेवा पुस्तकालय परियोजना बनाई, और इसके लिए सेवा संदर्भ हैं। मैं कक्षा पुस्तकालय से सेवाओं का उपयोग करता हूं, इसलिए कक्षा पुस्तकालय के अतिरिक्त मेरे डब्ल्यूपीएफ आवेदन परियोजना से संदर्भ हैं। सेवाओं को सीधे आगे स्थापित किया जाता है - केवल एसिंक सेवा कार्यों को पाने के लिए बदला जाता है।

सबकुछ ठीक काम कर रहा था - जब तक कि मैं अपने सेवा संदर्भों को अपडेट नहीं करना चाहता था। यह असफल रहा, इसलिए मैं अंततः वापस घुमाया और पुनः प्रयास किया, लेकिन यह तब भी असफल रहा! इसलिए - सेवा संदर्भ अपडेट करना इसमें कोई बदलाव किए बिना विफल रहता है। क्यूं कर?!

मुझे जो त्रुटि मिलती है वह यह है:

Custom tool error: Failed to generate code for the service reference 
'MyServiceReference'.  Please check other error and warning messages for details.   

चेतावनी अधिक जानकारी देता है:

Custom tool warning: Cannot import wsdl:portType
Detail: An exception was thrown while running a WSDL import extension: 
System.ServiceModel.Description.DataContractSerializerMessageContractImporter
Error: List of referenced types contains more than one type with data contract name 'Patient' in  
namespace 'http://schemas.datacontract.org/2004/07/MyApp.Model'. Need to exclude all but one of the 
following types. Only matching types can be valid references: 
"MyApp.Dashboard.MyServiceReference.Patient, Medski.Dashboard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" (matching)
"MyApp.Model.Patient, MyApp.Model, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" (matching)
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:portType[@name='ISomeService']

दो समान चेतावनियां भी कह रही हैं:

Custom tool warning: Cannot import wsdl:binding
Detail: There was an error importing a wsdl:portType that the wsdl:binding is dependent on.
XPath to wsdl:portType: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:portType[@name='ISomeService']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='WSHttpBinding_ISomeService']  

और इसके लिए भी:

Custom tool warning: Cannot import wsdl:port .. 

मुझे यह सब भ्रमित लगता है .. मेरे पास सेवा संदर्भ के माध्यम से प्राप्त किए गए क्लाइंट साइड डैशबोर्ड पर एक रोगी वर्ग नहीं है। तो इसका क्या अर्थ है? और यह अचानक क्यों दिखाता है? याद रखें: मैंने कुछ भी नहीं बदला!

अब, इसका समाधान here पाया गया था, लेकिन इसके अर्थ के बिना स्पष्टीकरण के। इसलिए; सेवा के लिए "सेवा संदर्भ कॉन्फ़िगर करें" में मैं "संदर्भित असेंबली में पुन: उपयोग प्रकार" चेकबॉक्स को अनचेक करता हूं। अब पुनर्निर्माण यह सब बिना किसी समस्या के ठीक काम करता है। लेकिन मैं वास्तव में क्या बदल गया? क्या इससे मेरे आवेदन पर असर पड़ेगा? और इसे कब अनचेक करना चाहिए? मैं उन प्रकारों का पुन: उपयोग करना चाहता हूं जिन्हें मैंने डेटाकंट्रैक्ट सेट अप किया है, लेकिन अब और नहीं। क्या मैं अभी भी इस चेक किए बिना उन तक पहुंच प्राप्त करूंगा?

https://code.i-harness.com


जब आप कोई सेवा संदर्भ जोड़ते हैं, तो सेवा के द्वारा उपयोग किए जाने वाले प्रकारों के दो तरीके हैंडल किए जा सकते हैं:

  • प्रकार एक डीएलएल में संग्रहीत होते हैं, और उस डीएलएल को क्लाइंट और सर्वर एप्लिकेशन दोनों से संदर्भित किया जाता है।
  • प्रकार क्लाइंट द्वारा संदर्भित डीएलएल में नहीं हैं। उस स्थिति में उपकरण जो सेवा संदर्भ बनाता है, references.cs फ़ाइल में प्रकार बनाएगा।

ऐसी कई चीजें हैं जो गलत हो सकती हैं। हमने पाया है कि यदि उपकरण क्रैश हो जाता है, तो सेवा संदर्भ को हटाने और फिर से शुरू करने के लिए कभी-कभी तेज़ होता है।

हमने सेवा संदर्भ का उपयोग बंद कर दिया है। उन परियोजनाओं के लिए जहां हमारे पास ग्राहक और सेवा का नियंत्रण है, हम इस screencast में वर्णित विधि का उपयोग करते हैं।


जो अजीब लग सकता है, लेकिन मुझे संदर्भों को हटाकर, फिर विजुअल स्टूडियो को बंद करके इसे फिर से खोलना, और आखिरकार संदर्भों को फिर से जोड़ना तय कर दिया।

मुझे लगता है कि कस्टम टूल चीज़ को पुनरारंभ करने या कुछ करने की आवश्यकता है।


भविष्य में किसी के लिए, मुझे एक ही त्रुटि थी, लेकिन संस्करण के मुद्दों के कारण, दो अलग-अलग तरीकों से।

मेरे पास दो डब्ल्यूसीएफ सेवाएं और दो ग्राहक अनुप्रयोग हैं जो सेवा संदर्भों के माध्यम से बात करते हैं। मैंने दोनों पक्षों पर एक nuget पैकेज अद्यतन किया और सेवा संदर्भ को अद्यतन करने का प्रयास किया और यह त्रुटि मिली।

हटाना मदद नहीं की। "पुन: उपयोग असेंबली" को अनचेक करना वांछित नहीं है क्योंकि मुझे उनका पुन: उपयोग करने की आवश्यकता है - यह पूरा बिंदु है।

अंत में, दो अलग-अलग मुद्दे थे:

1) पहला मुद्दा, मेरा मानना ​​है, एक दृश्य स्टूडियो कैशिंग मुद्दा था। मैं सावधानीपूर्वक सभी संदर्भों पर चला गया और कोई समस्या नहीं मिली लेकिन यह अभी भी फाइल के पिछले संस्करण को खोजने में असमर्थ होने की सूचना दी गई है। मैंने सभी nuget संकुलों को अनइंस्टॉल किया, दृश्य स्टूडियो को पुनरारंभ किया, और उन्हें पुनर्स्थापित किया। सेवा संदर्भ अद्यतन करना काम किया।

2) दूसरा मुद्दा एक निर्भरता मुद्दे के कारण हुआ था। मैंने दोनों तरफ से nuget पैकेज अद्यतन किया और सबकुछ सही दिखाई दिया, लेकिन एक अनमार्कित निर्भरता सिंक से बाहर थी। उदाहरण:

पैकेज फू v1 संदर्भ बार v1। संदर्भ को अद्यतन किए बिना स्वतंत्र रूप से v2 को Foo और Bar को अपडेट करना संभव है। यदि आप Foo और Bar v2 दोनों को स्थापित करते हैं तो सेवा संदर्भ उपकरण Foo v2 को स्कैन करेगा, बार v1 के संदर्भ को देखें, और विफल हो क्योंकि यह पुराना संस्करण नहीं ढूंढ सकता है। यह केवल तभी सही ढंग से रिपोर्ट किया जाता है जब आप प्रत्येक पैकेज के लिए अपने डीएल के संस्करण संख्याओं को अद्यतन करते हैं। विजुअल स्टूडियो और एमएसबिल्ड को एप्लिकेशन बनाने में कोई समस्या नहीं होगी लेकिन सेवा संदर्भ में सबकुछ हल करने का प्रयास करने में एक भयानक समय होगा।

मुझे उम्मीद है इससे किसी को सहायता मिलेगी।


मुझे आज भी यह मुद्दा था। मेरी गलती खोजने के लिए मुझे एक पूरा दिन लगा। आशा करता हूँ की ये काम करेगा।

मेरी कक्षा जो आयात करने में सक्षम नहीं थी, में कटऑम एनम प्रकार की संपत्ति है। इस संपत्ति को डेटामेम्बर के रूप में चिह्नित किया गया है और एनम को डेटाकंट्रैक्ट के रूप में भी चिह्नित किया गया है। सब कुछ ठीक है। मैं बस हर एनम सदस्य को EnumMember के रूप में चिह्नित करना भूल गया।

तो मैंने बदल दिया

[DataContract]
public enum SortMethodType
{
    Default = 0,
    Popularity = 1,
    ReleaseDate = 2,
    PublishedDate = 3,
    TranslatedTitle = 4,
    OriginalTitle = 5,
    UserRating = 6,
    Duration = 7
}

इसके लिए:

[DataContract]
public enum SortMethodType
{
    [EnumMember]
    Default = 0,
    [EnumMember]
    Popularity = 1,
    [EnumMember]
    ReleaseDate = 2,
    [EnumMember]
    PublishedDate = 3,
    [EnumMember]
    TranslatedTitle = 4,
    [EnumMember]
    OriginalTitle = 5,
    [EnumMember]
    UserRating = 6,
    [EnumMember]
    Duration = 7
}

और अंततः यह काम किया!


मुझे यहां मेरा जवाब मिला: http://www.lukepuplett.com/2010/07/note-to-self-don-let-wcf-svcutil-reuse.html

लंबी कहानी छोटी: मैंने उन्नत मेनू से संदर्भ असेंबली में पुन : उपयोग प्रकारों को अनचेक किया।

मुझे नहीं पता कि यह मायने रखता है लेकिन मैं एमवीसी का उपयोग नहीं कर रहा हूं, लेकिन वेब फॉर्म।


मुझे विजुअल स्टूडियो (वीएस) 2010 से 2013 तक अपने समाधान को अपग्रेड करने और प्रत्येक प्रोजेक्ट के .NET Framework को 4 से 4.5.1 में बदलने के बाद चेतावनी मिली। मैंने वीएस बंद कर दिया और फिर से खोला और चेतावनी चली गयी।


मैं लगातार इस त्रुटि में दौड़ता हूं जबकि यह अन्य डेवलपर्स मशीन पर काम करता है। भले ही मैं अपनी वर्चुअल मशीन में हर जगह एक पूर्ण व्यवस्थापक हूं, फिर भी मैंने विजुअल स्टूडियो को बंद करने की कोशिश की, और 'व्यवस्थापक के रूप में चलाएं' के साथ फिर से खोलना और यह जादूगर रूप से काम किया।

सौभाग्य।


यदि संदेह है कि आपकी सेवा में कोई समस्या नहीं है (जैसे कि enums के साथ समस्याएं, या दूसरों द्वारा उल्लिखित गैर-धारावाहिक वर्ग) तो नए संदर्भ के साथ एक नई परियोजना बनाने का प्रयास करें।

मैं सिल्वरलाइट 5 का उपयोग कर रहा हूं और मैंने संदर्भ को कई बार हटाने और फिर से बनाने की कोशिश की थी। reference.cs . reference.cs फ़ाइल हर बार पूरी तरह से खाली हो गई है और यह सचमुच सालों से रहा है क्योंकि मैंने इसे बनाया था ताकि सेवा में जो बदलाव आया था, उसे समझने की कोशिश कर रहा था।

मैंने देखा कि त्रुटि में 2.0.5.0 के संदर्भ शामिल हैं। अब मुझे यह भी पता नहीं है कि यह वास्तव में सिल्वरलाइट संस्करण के लिए प्रासंगिक है, लेकिन यह मुझे केवल एक नई परियोजना बनाने के बारे में सोचता है और फिर अचानक सबकुछ काम करता है।

चेतावनी 2 कस्टम टूल चेतावनी: wsdl आयात नहीं कर सकता: पोर्ट टाइप विवरण: WSDL आयात एक्सटेंशन चलाते समय एक अपवाद फेंक दिया गया था: System.ServiceModel.Description.DataContractSerializerMessageContractImporter त्रुटि: फ़ाइल या असेंबली 'System.Xml, संस्करण = 2.0.5.0 लोड नहीं हो सका, संस्कृति = तटस्थ, PublicKeyToken = 7cec85d7bea7798e 'या इसकी निर्भरताओं में से एक। सिस्टम निर्दिष्ट फाइल का पता लगाने में नाकामयाब रहा। XPath त्रुटि स्रोत: // wsdl: परिभाषाएं [@targetNamespace = ''] / wsdl: पोर्ट प्रकार [@ name = 'IShoppingCart']


संदर्भित असेंबली में 'पुन: उपयोग प्रकार' को बंद करने का एक नकारात्मक पक्ष यह है कि यह संदिग्ध संदर्भों के साथ मुद्दों का कारण बन सकता है। यह उन संदर्भों को संदर्भित करता है जो संदर्भ .cs फ़ाइल में फिर से बनाते हैं, और सेवा लागू करने वाला आपका कोड उन्हें मूल नामस्थान से संदर्भित कर सकता है।

जब यह परिदृश्य होता है तो मुझे 'संदर्भित असेंबली असेंबली में' पुन: उपयोग प्रकारों की जांच करने के लिए उपयोगी लगता है जो मुझे केवल अस्पष्ट संदर्भों वाले लोगों को चुनने की अनुमति देता है, जो इस तरह से समस्या को हल करता है।

उम्मीद है कि यह किसी और की मदद करता है।





service-reference