कभी-कभी WCF सेवा संदर्भ जोड़ने से एक खाली reference.cs उत्पन्न होती है


159

कभी-कभी WCF सेवा संदर्भ जोड़ने से एक खाली reference.cs उत्पन्न होती है और मैं परियोजना में कहीं भी सेवा का संदर्भ नहीं दे सकता।

क्या किसी ने इसका सामना किया है?

जवाबों:


377

आम तौर पर मुझे लगता है कि यह एक कोड-जीन मुद्दा है और अधिकांश समय ऐसा है क्योंकि मुझे एक प्रकार का नाम संघर्ष मिला है जो इसे हल नहीं कर सका।

यदि आप अपने सेवा संदर्भ पर राइट-क्लिक करते हैं और कॉन्फ़िगर और अनचेक करें "संदर्भ प्रकारों में पुन: उपयोग के प्रकार" को अनचेक करें तो यह समस्या को हल करेगा।

यदि आप इस सुविधा के कुछ पहलू का उपयोग कर रहे थे, तो आपको यह सुनिश्चित करने की आवश्यकता होगी कि आपके नाम साफ हो जाएं।


5
जब यह मेरे साथ हुआ, तो मैंने पाया कि मुझे ObjectModel.ObservableCollection से Generic.List में संग्रह प्रकार बदलने की आवश्यकता है
Yossi Dahan

2
मुझे हुआ क्योंकि मैं आंशिक वर्ग में शामिल हुआ।
मकोतोसन

2
हालाँकि, यदि आप किसी विशिष्ट असेंबली से प्रकारों का उपयोग करना चाहते हैं, तो आप बस उस असेंबली का चयन कर सकते हैं और यह ठीक वैसे ही काम करता है (कम से कम मेरे मामले में), ता
डेड.ब्रिट

26
यह मेरे दिमाग को चकरा देता है कि मुझे इस सवाल से 6 सप्ताह बाद भी औसतन 50 अंक प्रति सप्ताह मिलते हैं। एमएस पर आओ, इसे ठीक करो। कम से कम डेवलपर्स को कुछ प्रतिक्रिया दें जब यह एक खाली फाइल को घूरने के बजाय खराब हो जाता है।
एंडरसन Imes

1
9 साल बाद और आप अभी भी मदद कर रहे हैं। धन्यवाद!
पैरामीटर

38

जैसा कि स्वीकृत उत्तर बताते हैं, एक प्रकार का संदर्भ मुद्दा जब प्रकार पुन: उपयोग करना संभवत: अपराधी है। मैंने पाया कि जब आप आसानी से समस्या का निर्धारण नहीं कर सकते हैं तो svcutil.exe कमांड लाइन का उपयोग करके आपको अंतर्निहित समस्या को प्रकट करने में मदद मिलेगी (जैसा कि जॉन सॉन्डर्स बताते हैं)।

एक वृद्धि के रूप में यहाँ svcutil का उपयोग करने का एक त्वरित उदाहरण है।

svcutil /t:code https://secure.myserver.com/services/MyService.svc /d:test /r:"C:\MyCode\MyAssembly\bin\debug\MyAssembly.dll"

कहाँ पे:

  • / t: कोड दिए गए url से कोड उत्पन्न करता है
  • / d: आउटपुट के लिए निर्देशिका निर्दिष्ट करने के लिए
  • / r: एक संदर्भ विधानसभा निर्दिष्ट करने के लिए

पूर्ण svcutil कमांड लाइन संदर्भ यहाँ: http://msdn.microsoft.com/en-us/library/aa347733.aspx

एक बार जब आप svcutil चलाते हैं, तो आपको आयात द्वारा फेंके जाने वाले अपवाद को देखना चाहिए। आपको इस प्रकार का संदेश आपके किसी एक प्रकार के बारे में प्राप्त हो सकता है: "संदर्भित प्रकार का उपयोग नहीं किया जा सकता है क्योंकि यह आयातित DataContract से मेल नहीं खाता है"।

यह बस के रूप में निर्दिष्ट किया जा सकता है कि सेवा के लिए DataContract में जो उत्पन्न हुआ था, उसमें से संदर्भित विधानसभा में एक प्रकार में अंतर है। मेरे मामले में, मैं जिस सेवा का आयात कर रहा था, उसके पास साझा असेंबली में मेरे पास नए, अद्यतन प्रकार थे। यह स्पष्ट रूप से स्पष्ट नहीं था क्योंकि अपवाद में उल्लिखित प्रकार समान था। जो अलग था वह नेस्टेड जटिल प्रकारों में से एक था।

ऐसे और भी जटिल परिदृश्य हैं जो इस प्रकार के अपवाद को ट्रिगर कर सकते हैं और परिणामस्वरूप रिक्त संदर्भ ।cs। यहाँ एक उदाहरण है

यदि आप इस समस्या का सामना कर रहे हैं और आप अपने डेटा अनुबंधों में जेनेरिक प्रकारों का उपयोग नहीं कर रहे हैं और न ही आप IsReference = true का उपयोग कर रहे हैं, तो मैं यह निश्चित करने की अनुशंसा करता हूं कि आपके साझा प्रकार आपके क्लाइंट और सर्वर पर बिल्कुल समान हैं। अन्यथा, आप संभवतः इस समस्या में भाग लेंगे।


मेरे मामले में, यह तब हुआ जब मैंने एक विधानसभा का उल्लेख किया, जिसने मेरी डब्ल्यूसीएफ सेवा को भी संदर्भित किया। असेंबली की सूची से उस विधानसभा को हटाने के साथ इसे तय करने के लिए साझा करना।
xr280xr

मुझे सेवा संदर्भ जोड़ते समय एक अर्थहीन त्रुटि संदेश (सिर्फ एक नाम स्थान) मिल रहा था और इसने इस मुद्दे को इंगित किया।
bcampolo

12

जब ऐसा होता है, तो एरर्स विंडो और आउटपुट विंडो में देखें कि क्या कोई त्रुटि संदेश है या नहीं। यदि वह मदद नहीं करता है, svcutil.exeतो मैन्युअल रूप से चलाने का प्रयास करें , और देखें कि क्या कोई त्रुटि संदेश हैं।


@ Svcutil.exe कैसे चलाएं? क्या आप मेरी मदद कर सकते हैं ?
अरुल सिदथान

@Arul: svcutil.exe पर जानकारी खोजने के लिए Google का उपयोग करें।
जॉन सॉन्डर्स

2
यकीन नहीं होता कि Microsoft ने यह पोस्ट पढ़ी है, लेकिन यहां तक ​​कि सिर्फ एक संदेश बॉक्स दिखा रहा है जिसमें कहा गया है कि त्रुटियों और चेतावनियों के बजाय चुपचाप उन्हें (मेरे मामले में कम से कम), त्रुटि सूची विंडो में डाल दिया होगा, इसलिए मुझे Google की आवश्यकता नहीं थी यह। वैकल्पिक रूप से मुझे लगता है कि नए चेतावनियों / त्रुटियों के समय लाल या पीले रंग में टैब शो होना उपयोगी होगा?
jrh

12

मैं इस सटीक समस्या के साथ पूरे दिन के लिए अपना सिर काट रहा हूं। मैंने अभी इसे ठीक किया है। ऐसे...

एसएसएल पर सेवा को चलाना था (यानी यह https://mydomain.com/MyService.svc पर है )

एक विकास सर्वर पर WCF सेवा के लिए एक सेवा संदर्भ जोड़ना ठीक काम किया।

लाइव प्रोडक्शन सर्वर पर डब्ल्यूसीएफ सेवा के ठीक उसी बिल्ड को तैनात करना , फिर क्लाइंट एप्लिकेशन पर स्विच करना और लाइव सर्विस को इंगित करने के लिए सर्विस रेफरेंस को कॉन्फ़िगर करना कोई त्रुटि नहीं दिखाई देता, लेकिन ऐप नहीं बनेगा: यह पता चलता है कि सर्विस रेफरेंस Reference.cs फ़ाइल पूरी तरह से खाली थी! सेवा संदर्भ को अपडेट करने से कोई फर्क नहीं पड़ा। समाधान की सफाई से कोई मदद नहीं मिली। VS2010 को फिर से शुरू करने से कोई फर्क नहीं पड़ा। एक नया रिक्त समाधान बनाना, एक सांत्वना परियोजना शुरू करना और लाइव सेवा के लिए एक सेवा संदर्भ जोड़ना बिल्कुल उसी समस्या को प्रदर्शित करता है।

मुझे नहीं लगा कि यह परस्पर विरोधी प्रकारों या किसी भी चीज के कारण था, लेकिन क्या हीक - मैंने "सभी संदर्भित विधानसभाओं में पुन: उपयोग के प्रकार" को अनचेक करके WCF सेवा संदर्भ को फिर से जोड़ दिया। कोई आनंद नहीं है; मैंने चेक मार्क वापस लगा दिया।

अगला कदम संदर्भ URL पर svcutil को देखने की कोशिश करना था कि क्या समस्या को उजागर करने में मदद मिलेगी। यहाँ आदेश है:

svcutil /t:code https://mydomain.com/MyService.svc /d:D:\test

इससे निम्नलिखित उत्पादन हुआ:

Microsoft (R) Service Model Metadata Tool
[Microsoft (R) Windows (R) Communication Foundation, Version 4.0.30319.1]
Copyright (c) Microsoft Corporation.  All rights reserved.

Attempting to download metadata from 'https://mydomain.com/MyService.svc' using WS-Metadata Exchange or DISCO.
Error: Cannot import wsdl:portType
Detail: An exception was thrown while running a WSDL import extension: System.ServiceModel.Description.DataContractSerializerMessageContractImporter
Error: Schema with target namespace 'http://mynamespace.com//' could not be found.
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://mynamespace.com//']/wsdl:portType[@name='IMyService']


Error: 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://mynamespace.com//']/wsdl:portType[@name='IMyService']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='WSHttpBinding_IMyService']


Error: Cannot import wsdl:port
Detail: There was an error importing a wsdl:binding that the wsdl:port is dependent on.
XPath to wsdl:binding: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='WSHttpBinding_IMyService']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:service[@name='MyService']/wsdl:port[@name='WSHttpBinding_IMyService']


Generating files...
Warning: No code was generated.
If you were trying to generate a client, this could be because the metadata documents did not contain any valid contracts or services
or because all contracts/services were discovered to exist in /reference assemblies. Verify that you passed all the metadata documents to the tool.

Warning: If you would like to generate data contracts from schemas make sure to use the /dataContractOnly option.

इससे मैं पूरी तरह से लड़खड़ा गया था। भारी googling और वास्तव में बल्कि पार पाने के बावजूद, और एक बस चालक के रूप में एक कैरियर पर पुनर्विचार करते हुए, मैंने आखिरकार विचार किया कि इसने विकास के बॉक्स पर क्यों काम किया। यह एक IIS कॉन्फ़िगरेशन समस्या हो सकती है?

मैंने विकास और लाइव बॉक्स दोनों में एक साथ रीमोट किया, और प्रत्येक पर मैंने IIS प्रबंधक (IIS 7.5 चला रहा है) को निकाल दिया। अगला, मैं प्रत्येक सर्वर पर मूल्यों की तुलना करते हुए, प्रत्येक बॉक्स पर प्रत्येक कॉन्फ़िगरेशन सेटिंग के माध्यम से गया।

और समस्या है: साइट के लिए "एसएसएल सेटिंग्स" के तहत, सुनिश्चित करें कि "एसएसएल की आवश्यकता है" चेक किया गया है, और "स्वीकार" के लिए क्लाइंट सर्टिफिकेट रेडियो बटन की जांच करें। निर्धारित समस्या!


5

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

  1. समस्या वाले सेवा संदर्भ निकालें।
  2. प्रोजेक्ट हाइलाइट करने के लिए समाधान एक्सप्लोरर में प्रोजेक्ट नाम पर क्लिक करें ।
  3. प्रोजेक्ट संदर्भ पर राइट-क्लिक करें।
  4. संदर्भ सूची के शीर्ष के पास, क्लीन आइटम पर क्लिक करें ।
  5. आप सामान्य रूप से अपना सेवा संदर्भ जोड़ें।

उम्मीद है की यह मदद करेगा।


3

पिछले संस्करण से अपग्रेड किए गए सिल्वरलाइट 5 के साथ मुझे यह समस्या थी।

यहां तक ​​कि सेवा संदर्भ को फिर से जोड़ने पर भी मुझे एक खाली संदर्भ दिया गया

मैंने एक नया प्रोजेक्ट बनाने और सेवा संदर्भ को फिर से बनाने के लिए समाप्त कर दिया। यदि आपने इस पर लगभग आधे घंटे से अधिक समय बिताया है, तो यह प्रयास करना है। यहां तक ​​कि अगर आप मूल परियोजना को ठीक करने के लिए दृढ़ हैं, तो आप यह देखना चाहते हैं कि क्या होता है और फिर समस्या को ठीक करने की कोशिश करने के लिए पीछे की ओर काम करें।

मैंने कभी पता नहीं लगाया कि समस्या क्या थी - लेकिन संभवतः .csproj फ़ाइल में कुछ अपग्रेड नहीं किया गया था या कुछ सेटिंग गलत हो गई थी।


1
ठीक है यह पता चला है कि मैं एक पुराने संस्करण का उल्लेख कर रहा हूं System.Xml.Linq- इसलिए यदि आपने स्विच किए हुए संस्करण
शमौन_वेर

1

यदि आपने हाल ही में अपनी परियोजना में एक संग्रह जोड़ा है जब यह होने लगा, तो समस्या दो संग्रह की वजह से हो सकती है जिसमें समान CollectionDataContract विशेषता है:

[CollectionDataContract(Name="AItems", ItemName="A")]
public class CollectionA : List<A> { }

[CollectionDataContract(Name="AItems", ItemName="A")]  // Wrong
public class CollectionB : List<B> { }

मैंने अपनी परियोजना के माध्यम से स्वीप करके त्रुटि को ठीक किया और यह सुनिश्चित किया कि प्रत्येक नाम और आइटम नाम अद्वितीय था:

[CollectionDataContract(Name="AItems", ItemName="A")]
public class CollectionA : List<A> { }

[CollectionDataContract(Name="BItems", ItemName="B")]  // Corrected
public class CollectionB : List<B> { }

फिर मैंने सेवा संदर्भ को फिर से ताज़ा किया और सब कुछ फिर से काम किया।


1

मेरा मुद्दा यह था कि मैंने अपनी वेब सेवा लिंक के अंत में " मेक्सिको " छोड़ दिया था ।

इसके बजाय " http://yeagertech.com/yeagerte/YeagerTechWcfService.YeagerTechWcfService.svc/mex "

" Http://yeagertech.com/yeagerte/YeagerTechWcfService.YeagerTechWcfService.svc " का उपयोग करें


यह इतना स्पष्ट है लेकिन इतना महत्वहीन है कि इसे अनदेखा करना या खारिज करना आसान है।
कार्ल ऑनगर

1

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

तब आपको केवल यह अनुमान लगाना होगा कि उस कोड में क्या गलत है।

उपकरण में कुछ त्रुटि प्रतिक्रिया, निश्चित रूप से मदद की होगी।

मैं एक वेब सेवा अनुबंध लिख रहा हूं। मेरे पास एक प्लेसहोल्डर एनम था जिसमें कोई सदस्य नहीं था। ठीक है। लेकिन अगर मैं इसे किसी अन्य वर्ग की संपत्ति में उपयोग करता हूं, और क्लाइंट पर अनुबंध dll का फिर से उपयोग करता हूं, तो कोडगैन एक त्रुटि संदेश के साथ फट जाता है। Svcutil.exe को चलाने में मदद नहीं मिली, यह सिर्फ उल्लेख किए बिना एक सीएस फ़ाइल को आउटपुट करने में विफल रहा।


सभी ऑपरेशन कॉन्ट्रैक्ट्स के बारे में बताते हुए मेरे लिए काम किया। मैं अपराधी के रूप में गलत तरीकों को देख रहा था। समस्या निवारण के लिए मूल बातें वापस करने के लिए धन्यवाद।
फ़िच

1

निम्नलिखित को यहां सूचीबद्ध नहीं किया गया है, और यह वह समाधान था जिसे मैंने अपनाया था (SvcUtils त्रुटि संदेश देखने में उपयोगी था। हालाँकि, मुझे जो त्रुटि मिली थी wrapper type message cannot be projected as a data contract type since it has multiple namespaces। मतलब, मैंने इस लीड का पालन किया, और इस पोस्ट के wsdl.exeमाध्यम से सीखा )।

मेरे मामले में, बस wsdl [ my-asmx-service-address ] को चलाने से एक समस्या-मुक्त .csफ़ाइल उत्पन्न हुई , जिसे मैंने अपनी परियोजना में शामिल किया और सेवा का उपयोग करने के लिए प्रेरित किया।


0

जैसा कि @dblood बताते हैं, मुख्य दर्द DataContractSerializer में है, जो सही प्रकार से पुन: उपयोग नहीं करता है। यहाँ पहले से ही कुछ उत्तर हैं इसलिए मैं कुछ प्रो और इन के बारे में विपक्ष जोड़कर शुरू करूँगा:

  • 'IsReference' ध्वज बहुत परेशानी का कारण बनता है, लेकिन इसे हटाना हमेशा जवाब नहीं होता है (विशेष रूप से: पुनरावृत्ति वाली स्थितियों में)।
  • अंतर्निहित मुद्दा यह है कि डेटा अनुबंध किसी भी प्रकार के नामों के समान नहीं है, भले ही वे कभी-कभी हों (हाँ! हाँ, आप इसे सही पढ़ते हैं!)। जाहिरा तौर पर धारावाहिक बनाने वाला काफी अड़ियल है और असली मुद्दे को खोजना बहुत कठिन है।
  • 'सेवा संदर्भ कॉन्फ़िगर करें' कार्यों से 'संदर्भ जाँच' को हटाकर, लेकिन आपको कई कार्यान्वयन के साथ छोड़ देता है। हालाँकि, मैं अक्सर DLL में SOAP इंटरफेस का पुन: उपयोग करता हूं। इसके अलावा, अधिकांश परिपक्व एसओए के बारे में मुझे पता है कि, कई सेवाएं इंटरफेस को लागू करती हैं और समान इंटरफ़ेस क्लासेस का विस्तार करती हैं। 'उपयोग संदर्भित प्रकारों' की जाँचों को हटाने से ऐसी स्थिति उत्पन्न होती है, जहाँ आप केवल वस्तुओं को अब और नहीं पास कर सकते हैं।

सौभाग्य से, यदि आप अपनी सेवा के नियंत्रण में हैं, तो एक सरल समाधान है जो इन सभी मुद्दों को हल करता है। इसका मतलब यह है कि आप अभी भी DLL के पार सेवा इंटरफेस का उपयोग कर सकते हैं - जो एक उचित समाधान के लिए IMO होना चाहिए। यह इस तरह से काम करता है:

  1. एक अलग इंटरफ़ेस DLL बनाएँ। उस DLL में, सभी DataContract और ServiceContract; ServiceContract को अपने इंटरफेस पर रखें।
  2. इंटरफ़ेस से सर्वर कार्यान्वयन को वितरित करें।
  3. अपनी पसंदीदा विधि का उपयोग करके क्लाइंट का निर्माण करने के लिए उसी DLL का उपयोग करें। उदाहरण के लिए (IMyInterface सेवा अनुबंध इंटरफ़ेस है):

    var httpBinding = new BasicHttpBinding();
    var identity = new DnsEndpointIdentity("");
    var address = new EndpointAddress(url, identity, new AddressHeaderCollection());
    var channel = new ChannelFactory<IMyInterface>(httpBinding, address);
    return channel.CreateChannel();
    

दूसरे शब्दों में: 'ऐड सर्विस रेफ़रेंस' की कार्यक्षमता का उपयोग न करें , लेकिन WCF को प्रॉक्सी पीढ़ी को दरकिनार करके (सही) सेवा प्रकारों का उपयोग करने के लिए मजबूर करें। आखिरकार, आपके पास पहले से ही ये कक्षाएं हैं।

प्रो की:

  1. आप svcutil.exe प्रक्रिया को बायपास करते हैं, जिसका अर्थ है कि आपके पास कोई IsReference समस्या नहीं है
  2. DataContract प्रकार और नाम परिभाषा द्वारा सही हैं; आखिरकार, सर्वर और क्लाइंट दोनों एक ही परिभाषा का उपयोग करते हैं।
  3. यदि आप API का विस्तार करते हैं या किसी अन्य DLL से प्रकार का उपयोग करते हैं, (1) और (2) अभी भी पकड़ है, तो आप वहां किसी भी परेशानी में नहीं चलेंगे।

विपक्ष:

  1. ए-सिंक तरीके एक दर्द हैं, क्योंकि आप एक सिंक सिंक उत्पन्न नहीं करते हैं। नतीजतन, मैं सिल्वरलाइट अनुप्रयोगों में ऐसा करने की सिफारिश नहीं करूंगा।

0

जब दोनों पक्षों पर परियोजना संदर्भों (सेवा परियोजना और सेवा का संदर्भ होने वाली परियोजना) के साथ काम करते समय मेरे पास टूटी हुई सेवा संदर्भों का मुद्दा था। यदि उदाहरण के लिए संदर्भित प्रोजेक्ट की .dll को "Contoso.Development.Common" कहा जाता है, लेकिन प्रोजेक्ट्स का नाम केवल "कॉमन" के लिए छोटा है, तो इस प्रोजेक्ट के प्रोजेक्ट रेफरेंस को "कॉमन" नाम दिया गया है। हालांकि सेवा को वर्गों के समाधान के लिए "Contoso.Development.Common" के संदर्भ का अनुमान है (यदि यह विकल्प सेवा संदर्भ विकल्पों में सक्रिय है)।

इसलिए एक्सप्लोरर के साथ मैंने प्रोजेक्ट का फ़ोल्डर खोला जो सेवा और "कॉमन" -प्रोजेक्ट को संदर्भित कर रहा है। वहां मैंने नोटपैड के साथ वीएस प्रोजेक्ट फाइल (.csproj) को एडिट किया। संदर्भित प्रोजेक्ट के नाम की खोज करें (जो इस उदाहरण में "Common.csproj" है) और आपको प्रोजेक्ट संदर्भ का प्रतिनिधित्व करने वाली कॉन्फ़िगरेशन प्रविष्टि जल्दी मिल जाएगी।

मैं बदल गया

<ProjectReference Include="..\Common\Common.csproj"> <Project>{C90AAD45-6857-4F83-BD1D-4772ED50D44C}</Project> <Name>Common</Name> </ProjectReference>

सेवा

<ProjectReference Include="..\Common\Common.csproj"> <Project>{C90AAD45-6857-4F83-BD1D-4772ED50D44C}</Project> <Name>Contoso.Development.Common</Name> </ProjectReference>

महत्वपूर्ण बात यह है कि संदर्भ के नाम को बदलने के लिए dll संदर्भित परियोजना आउटपुट के रूप में है।

फिर वीएस पर वापस स्विच करें। वहां आपको परियोजना को फिर से लोड करने के लिए कहा जाएगा क्योंकि इसे वी.एस. के बाहर संशोधित किया गया है। पुनः लोड बटन पर क्लिक करें।

ऐसा करने के बाद सेवा अद्यतन को जोड़ने के रूप में अपेक्षित के रूप में काम किया संदर्भ।

आशा है कि यह भी किसी और की मदद करता है।

सादर एम.एच.


0

मुझे विकास के दौरान कल इसी तरह के मुद्दे का सामना करना पड़ा। मुझे पता चला कि मैं अनुबंधों के 2 अलग-अलग संस्करणों में एक ही नाम स्थान का उपयोग कर रहा था।

हमने उदाहरण के लिए अनुबंध के 2 संस्करण version4 और version5 हैं। मैंने संस्करण 4 से सभी अनुबंधों की प्रतिलिपि बनाई है और संस्करण 4 से संस्करण 5 तक सभी नामों का नाम बदल दिया है। ऐसा करते समय मैं फ़ाइलों में से एक में v4 से v5 तक नाम स्थान का नाम बदलना भूल गया। नेमस्पेस संघर्ष के कारण, Reference.cs फ़ाइल खाली थी।

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


0

जॉन सॉन्डर्स पोस्ट के लिए धन्यवाद जिसने मुझे त्रुटि विंडो में देखने का विचार दिया। मैं पूरे दिन अपना सिर पीट रहा था और मैं किसी भी त्रुटि के लिए आउटपुट विंडो को देख रहा था।

मेरे मामले में अपराधी ISerializable था। मेरे पास DataMember प्रकार के अपवाद के साथ DataContract क्लास है। आपके पास किसी भी प्रकार का कोई DataMember नहीं हो सकता है जिसमें ISerializable कीवर्ड है। इस अपवाद में ISerializable है जैसे ही मैंने इसे हटा दिया सब कुछ एक आकर्षण की तरह काम किया।


0

इस समस्या का निवारण करने का प्रयास करते समय svcutil, मुझे dblood के उत्तर में संदर्भित त्रुटि प्राप्त हुई ("संदर्भित प्रकार का उपयोग नहीं किया जा सकता क्योंकि यह आयातित DataContract से मेल नहीं खाता")।

मेरे मामले में अंतर्निहित कारण एक Enum प्रकार प्रतीत होता था जिसमें DataContract विशेषता थी, लेकिन जिनके सदस्यों को EnumMember विशेषता के साथ चिह्नित नहीं किया गया था। जिस समस्या वर्ग की svcutilओर इशारा किया गया था, उसके पास उस एनम प्रकार के साथ एक संपत्ति थी।

यह dblood के जवाब के लिए एक टिप्पणी के रूप में बेहतर होगा, लेकिन इसके लिए पर्याप्त प्रतिनिधि नहीं ...


0

मेरे मामले में मेरे पास VB वेब फॉर्म प्रोजेक्ट के साथ एक समाधान था जिसने C # UserControl का संदर्भ दिया था। वीबी परियोजना और सीएस परियोजना दोनों में एक ही सेवा का सेवा संदर्भ था। संदर्भ वीबी परियोजना में सेवा संदर्भ के तहत और सीएस (फ्रेमवर्क) परियोजना में कनेक्टेड सर्विसेज ग्रुपिंग के तहत दिखाई दिया।

सेवा संदर्भ को अद्यतन करने के लिए (जैसे, संदर्भ प्राप्त करें। Vb वेब फ़ॉर्म प्रोजेक्ट में संदर्भ। vb फ़ाइल खाली न हो), मुझे CS PROJECT को फिर से तैयार करने की आवश्यकता है, फिर VB सेवा संदर्भ को अद्यतन करें, फिर CS परियोजना को वापस जोड़ें समाधान।


0

इन कदमों का अनुसरण करें:

  1. सेवा संदर्भ निकालें
  2. Visual Studio को बंद करें
  3. हटाएं / बिन और / ओबीजी फ़ोल्डर।
  4. विजुअल स्टूडियो खोलें।
  5. सेवा संदर्भ जोड़ें।
  6. आपका स्वागत है :)

ऐसा लगता है कि सेवा को जोड़ने पर इन फ़ोल्डरों में कुछ संदर्भ छोड़ दिए जाते हैं, जिससे ऑटो-पीढ़ी के कोड के दौरान त्रुटियां होती हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.