2009-02-19 7 views
64

मैं एक क्लाइंट/सर्वर WCF आवेदनमैं VS2008 में "लक्षित असेंबली में कोई सेवा प्रकार नहीं है" त्रुटि संदेश से कैसे छुटकारा पा सकता हूं?

मेरे निष्पादन किसी भी ServiceContract को परिभाषित नहीं करता है, तो यह और भी System.ServiceModel के लिए एक संदर्भ (नहीं है, लेकिन इसके बजाय एक विधानसभा जो कनेक्शन तर्क होता है के लिए एक संदर्भ है सर्वर)

मेरे पास एक और असेंबली है, जिसे मेरे EXE द्वारा संदर्भित किया गया है, जिसमें ServiceContract है।

यह ठीक काम करता था। कल, मैंने अपनी परियोजना सेटिंग्स (आंशिक ट्रस्ट, पूर्ण ट्रस्ट, तैनाती सेटिंग्स, और पर) के साथ बहुत कुछ खेला है और अब, हर बार जब मैं अपना क्लाइंट लॉन्च करता हूं, तो मुझे निम्न संदेश बॉक्स मिल गया है:

माइक्रोसॉफ्ट डब्ल्यूसीएफ सेवा होस्ट
लक्षित असेंबली में कोई सेवा प्रकार नहीं है।
आपको इस असेंबली की कोड एक्सेस सुरक्षा नीति को समायोजित करने की आवश्यकता हो सकती है।

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

मुझे a post on this problem मिला है, लेकिन समाधान मेरी स्थिति में लागू नहीं होता है। कोई विचार?

उत्तर

109

यह हमेशा ऐसा ही होता है। आप 2 घंटों की खोज करते हैं, अंततः आप SO पर पोस्टिंग समाप्त करते हैं, और 5 मिनट बाद, आपको जवाब मिल जाता है।

परियोजना ServiceContract को परिभाषित करने की संपत्तियों की WCF Options टैब में, वहाँ एक लेबल किया हुआ चेक "प्रारंभ WCF सेवा होस्ट जब एक ही समाधान में एक अन्य परियोजना डिबगिंग" है कि मैं अनचेक है।

मुझे नहीं पता कि यह पहली जगह कैसे चेक किया गया है।

वैसे भी, जिसने मेरी समस्या हल की। इस परियोजना सेटिंग के लिए MSDN Reference देखें।

+0

क्षमा करें, जल्दी से स्किम किया गया और लिंक को याद किया! मुझे लगता है कि पोस्टिंग और इसे सुलझाने में 5 मिनट बाद की चीज होती है क्योंकि आप समस्या के माध्यम से सोचते हैं और जब आप पोस्ट करते हैं और उन चीज़ों को उठाते हैं जिन्हें आपने पहले नहीं सोचा था तो अपने कदमों को दोबारा उठाएं। किसी भी तरह, खुशी है कि यह – Tanner

+0

हल किया गया कोई समस्या नहीं है! मेरे मामले में, मुझे Google में जटिल कामकाज मिल गया है, इसलिए मुझे नहीं लगता कि "बस उस चेकबॉक्स को अनचेक करें" समाधान मौजूद था! – Brann

+0

धन्यवाद! पिछले कुछ हफ्तों से इस से नाराज हो रहा है। –

7

इस समस्या के साथ परियोजना को निर्धारित करने के लिए अपनी प्रोजेक्ट फ़ाइलों में स्ट्रिंग 3D9AD99F-2412-4246-B90B-4EAA41C64699 खोजें।

उदाहरण: <ProjectTypeGuids>{3D9AD99F-2412-4246-B90B-4EAA41C64699};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

तो परियोजना विकल्प "WCF विकल्प/प्रारंभ WCF सेवा होस्ट जब एक ही समाधान में एक अन्य परियोजना डिबगिंग" बंद

+0

हालांकि यह समाधान कुछ लोगों के लिए मामला हल कर सकता है, कम से कम बनाम2015 में यह डब्ल्यूसीएफ प्रोजेक्ट पर राइट-क्लिक करते समय संदर्भ मेनू से "प्रकाशित करें" हटा देगा ... –

1

मैं भी इस समस्या का एक ही प्रकार के माध्यम से चला गया और खोजा गया इस विशेष त्रुटि से छुटकारा पाने के लिए घंटों के लिए। आखिरकार मुझे इससे बाहर निकलने का रास्ता पता चला।

आप इस विशेष समस्या का सामना करना है, तो आप प्रशासक के रूप में अपने दोनों सर्वर और ग्राहक आवेदन चलाने के लिए और बदल WPF गुण परियोजना के करने की कोशिश । जब आप प्रोजेक्ट के डब्ल्यूपीएफ गुणों पर क्लिक करेंगे, तो आपको एक बिल्ड विकल्प मिलेगा। बिल्ड विकल्प में, ** PLATFORM TARGET ** नामक एक विकल्प है, जिसमें आप प्लेटफ़ॉर्म लक्ष्य को x86 में बदलते हैं। यह भी ध्यान रखें कि x84 के मामले में, आपको इसे x84 पर सेट करने की आवश्यकता है।

अब कंसोल, अर्थात से अपने प्रोजेक्ट को चलाने जहां अपनी परियोजनाओं में सहेजे जाते हैं फ़ोल्डर में जाने के लिए और ग्राहक की बिन में, आप एक फ़ोल्डर डीबग जहाँ आप अपने सांत्वना आवेदन मिल जाएगा मिल जाएगा। आवेदन चलाएं और आपको सफलता मिलेगी !!!

4

कुछ ब्लॉग कहते हैं, यह क्योंकि एक अलग शाखा, कि GUIDs ओवरराइड करता है से परियोजना को कॉपी करने की happend हो सकता है ... के रूप में this blog.

+0

वीएस2015 से डी गिड को हटाकर, परियोजना अवैध – Hugo

9

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

मैंने एक परियोजना से बाहर सेवा कोड स्थानांतरित किया जो कि एक अलग परियोजना के लिए निष्पादन योग्य था लेकिन गलती से पुरानी App.config फ़ाइल छोड़ दी गई। मेरा नया प्रोजेक्ट, जो एक कंसोल एप्लिकेशन प्रोग्रामेटिक रूप से कॉन्फ़िगर किया गया था और डब्लूसीएफ शुरू किया गया था, लेकिन पुराने App.config फ़ाइल संदर्भित असेंबली में थी, इसलिए मुझे कंसोल एप्लिकेशन को डिबग करने पर भी उस गुप्त संवाद बॉक्स को मिलेगा।

इस ट्रैक को ट्रैक करने के लिए लगभग 12 घंटे लग गए क्योंकि मुझे एहसास नहीं हुआ कि वीएस डीबगर App.config के लिए सभी संदर्भित असेंबली की जांच करता है जिसमें डब्ल्यूसीएफ सेवाओं को कॉन्फ़िगर किया गया है।

+0

धन्यवाद ! यह मेरे लिए जवाब था! –

1

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

<system.serviceModel> 
    <services> 
     <service name="MyServiceLibrary.WrongServiceName"> 
... 

अपने कॉन्फ़िग फ़ाइल की जाँच करें और सुनिश्चित करें कि सेवा नाम सही है हो सकता है।

1

पुराना धागा। विकल्प में डीबग सेक्शन से किसी भी कमांडलाइन तर्क को हटा दें। इससे मुझे मदद मिली।