2011-12-07 21 views
7

उत्पन्न नहीं करता है, मुझे लगता है कि अन्य समान प्रश्न हैं, लेकिन मैं एक प्रतिक्रियात्मक प्रतिक्रिया नहीं पा रहा हूं।सेवा संदर्भ जोड़ें प्रॉक्सी

मैं टेम्पलेट से डिफ़ॉल्ट डब्ल्यूसीएफ सेवा बनाता हूं [जो GetData() और GetDataUsingDataContract()] के साथ आता है।
यह ब्राउज़र में ठीक है।

मैं एक अलग वेब साइट है जो मैं इस नए WCF सेवा जोड़ने के लिए:

मैं 'सेवा संदर्भ जोड़ें', मेरे URL दर्ज करें, सेवा ऊपर आता है और मैं इसे जोड़ने के लिए 'ठीक' पर क्लिक करें।
'App_WebReferences' के तहत, मुझे अपनी अतिरिक्त सेवा का नामस्थान दिखाई देता है: 'ServiceReference1', इसके अंतर्गत 'References.svcmap' के साथ, और उसके अंतर्गत कुछ .svcinfo/.wsdl/.xsd फ़ाइलें।

कोई प्रॉक्सी फ़ाइलें नहीं बनाई गई हैं, लेकिन <system.serviceModel> तत्व मेरे web.config में जोड़ा गया है, जो उचित जानकारी प्रतीत होता है।

हालांकि, कोई प्रॉक्सी के साथ, मैं नहीं पहुँच/मेरी सेवा में किसी भी तरीकों कॉल कर सकते हैं (यानी ServiceReference1.WCFMethod1())

मैं,, svcutil कॉल कर सकते हैं प्रॉक्सी उत्पन्न मेरी App_Code में जोड़ने, और सब कुछ यह रूप में काम करता ऐसा करना चाहिए।
मेरा सवाल है, मेरा प्रॉक्सी 'सेवा जोड़ें संदर्भ' के साथ क्यों नहीं बनाया जा रहा है?
सब कुछ लक्ष्य ढांचे के अधीन है: .नेट फ्रेमवर्क 4.

संपादित करें:

बस एक कंसोल अनुप्रयोग बनाया है और सेवा संदर्भ जोड़ कर उसे प्रॉक्सी बनाया। तो इस मुद्दे को अपने वेब साइट प्रॉक्सी बनाने नहीं है ...

+0

क्या आपने सेवा को कॉल करने का प्रयास करने वाले पृष्ठ के लिए कोड-बैक पर एक उपयोग (VB.NET के लिए आयात) कथन जोड़ा था? आईई, ' का उपयोग करना। सेवा रिफरेंस 1;' या कुछ समान है? – Tim

+0

यदि आप किसी वेबसाइट "प्रोजेक्ट" (फ़ाइल-> नई वेब साइट) का उपयोग कर रहे हैं, तो यह प्रॉक्सी नहीं बनाता है और रनटाइम तक नहीं बनाता है। –

+1

जॉन, हाँ मैं इसका उपयोग कर रहा हूं। तो, svcutil का उपयोग करने के अलावा कोई और तरीका नहीं है? – eych

उत्तर

2

आप एक ServiceReference जोड़ रहे हैं जब: सन्दर्भ -> नई सेवा संदर्भ जोड़ें। उन्नत बटन पर क्लिक करें और "सभी संदर्भित असेंबली में पुन: उपयोग प्रकार" अनचेक करें। यह विकल्प कभी-कभी त्रुटियों का कारण बनता है।

3

मुझे यह समस्या थी और पाया कि अनचेकिंग सभी संदर्भित असेंबली में पुन: उपयोग प्रकार समस्या का समाधान किया। हालांकि, मेरे मामले में, मुझे अपने कुछ संदर्भित पुस्तकालयों के प्रकारों का पुन: उपयोग करने की आवश्यकता थी। मुझे this post मिला, जिसमें एक बहुत ही समान समस्या शामिल है।

  • आप दृश्य स्टूडियो 2012 में एक ASP.NET MVC4 वेब एपीआई परियोजना बनाने:

    इस परिदृश्य पर विचार करें: उस पोस्ट में, यह एक Microsoft knowledge-base article जो निम्न समस्या के लिए एक ठीक वर्णन करता संदर्भ देता है।

  • आप इस परियोजना में एक डब्ल्यूसीएफ सेवा संदर्भ जोड़ते हैं।

इस परिदृश्य में, Reference.cs सेवा संदर्भ के लिए फ़ाइल खाली है।

कारण

यह समस्या इसलिए होती है क्योंकि DataContractSerializer वर्ग एक प्रकार (Newtonsoft.Json.Linq.JToken) है कि यह समर्थन नहीं करता सामना करना पड़ा है। इस मामले में, यह एक अपवाद फेंकता है, और फिर सेवा संदर्भ उत्पन्न करना बंद कर देता है।

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

निश्चित रूप से, मुझे पता चला कि, मेरे मामले में, अपराधी मेरी खुद की पुस्तकालयों में से एक था, जिसमें एक ही डब्ल्यूसीएफ सेवा के लिए सार्वजनिक प्रॉक्सी शामिल थी। मुझे संदेह है कि यह सार्वजनिक प्रॉक्सी था जो परेशानी पैदा कर रहा था। किसी भी मामले में, निर्दिष्ट संदर्भित असेंबली में पुन: उपयोग प्रकार का चयन करके, और फिर को सभी विधानसभाओं का चयन करके को छोड़कर, एक सेवा संदर्भ स्वचालित रूप से प्रॉक्सी कक्षाओं को सही ढंग से उत्पन्न करता है।

2

यहां मुख्य मुद्दा है। समस्या स्रोत तब होता है जब आप अपने दृश्य स्टूडियो में वेब संदर्भ जोड़ने में सक्षम नहीं होते हैं। अगर सेवा एएसएमएक्स है, तो मेरे मामले में यह प्रॉक्सी क्लास उत्पन्न नहीं कर रहा था जब तक कि मुझे ये कदम नहीं मिले -> सर्किस संदर्भ पर क्लिक करें -> उन्नत पर क्लिक करें -> वहां आप वेब संदर्भ जोड़ें देखेंगे ... अपनी सेवा यूआरएल प्रदान करें ठीक है मसला हल हो गया। उम्मीद है कि यह मदद करता है।

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