2012-12-31 24 views
5

प्रोजेक्ट आपके मानक रन-ऑफ-द-मिल ASP.NET MVC 3 एप्लिकेशन है जो घर के डब्ल्यूसीएफ सेवा के साथ संचार करता है। हमारा एएसपी.नेट एमवीसी एप्लीकेशन लोकप्रिय JSON.NET लाइब्रेरी समेत कुछ बाहरी पुस्तकालयों का संदर्भ देता है।JSON.NET लाइब्रेरी का संदर्भ देने वाले किसी प्रोजेक्ट में सेवा संदर्भ जोड़ने पर अजीब समस्या

समस्या तब होती है जब JSON.NET लाइब्रेरी एक प्रोजेक्ट में संदर्भ है। मैंने इस समस्या को वेबफॉर्म और Windows Forms प्रोजेक्ट के साथ पुन: प्रयास करने का प्रयास किया, और वही बात होती है।

जब हमारे WCF सेवा के लिए एक सेवा संदर्भ जोड़ने, और JSON.NET हमारी परियोजना में एक संदर्भ है, यह बनाता है इस तरह सेवा संदर्भ:

परियोजना में संदर्भित JSON.NET साथ

- नोटिस अनुरोध/प्रतिक्रिया वर्गों और ID1 और IdSpecified

With JSON.NET

की तरह अजीब गुण लेकिन JSON.NET के संदर्भ को दूर करने और सेवा संदर्भ को अद्यतन करने के लिए यह जिस तरह से हम चाहते हैं बनाता है, इस तरह:

JSON.NET बिना परियोजना

Without JSON.NET

में संदर्भित ...

इस दुनिया में क्या कारण हैं? जेएसओएन.नेट को डब्लूसीएफ परियोजना में संदर्भित नहीं किया गया है, इसलिए मुझे बहुत संदेह है कि वहां कुछ प्रकार का मिश्रण हो सकता है।

कुछ जानकारी मदद मिल सकती है:

  • ऐसे "संदर्भित विधानसभाओं में पुन: उपयोग प्रकार के" के रूप में जोड़ें सेवा संदर्भ संवाद में विभिन्न विकल्पों की जाँच की कोशिश की है - लेकिन एक ही बात
  • विजुअल स्टूडियो 2010
  • होता है
  • WCF सेवा डेटा पहुँच के लिए इकाई की रूपरेखा का उपयोग करता
+0

मैं एक समान समस्या [यहां] देखा है (http://stackoverflow.com/questions/12918062/404-error-when-trying-to-execute-web-service/12921319)। यदि आप Newtonsoft.json.dll का उपयोग करते हैं तो आप webservice को ठीक से हटा सकते हैं और जोड़ सकते हैं? क्या आप webservice पर ब्राउज़ कर सकते हैं और wsdl ढूंढ सकते हैं? –

+0

हां, JSON.NET के संदर्भ को हटा रहा है और फिर सेवा संदर्भ जोड़ना सही ढंग से काम करता है। और हाँ, wsdl ऐसा होना चाहिए जैसा होना चाहिए। –

उत्तर

0

जब आप एक सेवा संदर्भ जोड़ने के लिए, WCF डिफ़ॉल्ट रूप से होगा अपने असेंबली से कक्षाओं का पुन: उपयोग करें जो अन्यथा उत्पन्न किए जाएंगे।

ऐसा इसलिए होता है क्योंकि, उदाहरण के लिए, आप सेवा और ग्राहक दोनों विकसित कर सकते हैं और आप दोनों परियोजनाओं में संदर्भित सभी कक्षाओं के साथ कक्षा पुस्तकालय रखना चाहेंगे। यह भी सुनिश्चित करता है कि .NET डिफ़ॉल्ट प्रकार (जैसे सरणी, सूचियां, डेटटाइम) का उपयोग किया जाता है।

आप इस तरह इस डिफ़ॉल्ट व्यवहार को बदल सकते हैं:

  1. उन्नत बटन पर क्लिक करें के बाद आपके द्वारा चयनित

  2. "निर्दिष्ट संदर्भित विधानसभाओं में पुन: उपयोग प्रकार के"

  3. चुनें "सेवा संदर्भ जोड़ें"

  4. सभी विधानसभाओं की जाँच करें, लोगों को छोड़कर कि आप उपयोग नहीं करना चाहते

ध्यान दें कि यदि आप सिस्टम असेंबली की जांच नहीं करते हैं, तो आपको प्रत्येक .NET प्रकार (जैसे सरणी, सूचियों) के लिए प्रॉक्सी फ़ाइल में जेनरेट किया गया एक नया प्रकार मिलेगा।