2009-06-24 10 views
21

मैं एक आरईएसटी डब्ल्यूसीएफ परियोजना पर काम कर रहा हूं और जब मैं निम्नलिखित कोड को लागू करता हूं, तो यह शिकायत करता है कि यह वेबगेट क्लास को हल नहीं कर सकता है? मैं क्या खो रहा हूँ?डब्ल्यूसीएफ - [वेबगेट] प्रतीक को हल नहीं कर सकता - मैं गलत क्या कर रहा हूं?

मैंने सिस्टम.ServiceModel.Web नामस्थान आयात करने का प्रयास किया लेकिन इसे संदर्भित नहीं किया गया, भले ही मैंने इसका संदर्भ दिया। System.ServiceModel.Web में "वेब" पंजीकरण नहीं करता है जब मैं इसे अपने कोड के शीर्ष पर उपयोग कथन में पंजीकृत करता हूं।

असल में, मुझे वेबगेट, वेबइवोक, उरी टेम्पलेट इत्यादि जैसी डब्लूसीएफ आरईएसटी अवधारणाओं को लागू करने की क्या ज़रूरत है?

अद्यतन: कुछ प्रतिक्रिया के बाद और इस बारे में थोड़ा और अधिक मैं क्या किया है यह सोच कर ऐसा लगता है कि DLLs (System.ServiceModel & System.ServiceModel.Web) संदर्भ 'जोड़ें के माध्यम से नहीं आते हैं 'खिड़की जब मैं एक परियोजना संदर्भ जोड़ने के लिए जाओ। जब मैंने पहली बार परियोजना शुरू की, एफवाईआई, चूंकि ये असेंबली पहले नहीं आईं, इसलिए मैं उनके लिए 'खोज' चला गया, और उन्हें एक अस्थायी फ़ोल्डर में कॉपी किया ताकि मैं उनका संदर्भ दे सकूं और इस तरह, मुझे लगता है कि मुझे हल करने के मुद्दे हैं । तो, अब मैं इस बिंदु पर हूं, मैं इन वीसीएफ आरईएसटी डीएलएल को पहचानने/पंजीकृत करने के लिए अपना वीएस कैसे प्राप्त कर सकता हूं? धन्यवाद!

अद्यतन: मेरा मानना ​​है कि मैं कर रहा हूँ अद्यतन करने की तारीख के लिए सब कुछ पर: वी.एस. 2008 SP1 पर विकासशील - मैं नवीनतम एस.पी. डाउनलोड करने के लिए प्रयास करते हैं, बाकी पूर्वावलोकन 2 स्टार्टर किट डाउनलोड किया है, 3.5 फ्रेमवर्क के खिलाफ विकास, बनाने का प्रयास कर अंततः सिल्वरलाइट 2 क्लाइंट द्वारा उपभोग करने के लिए एक डब्ल्यूसीएफ आरईएसटी परत।

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Runtime.Serialization; 
using System.ServiceModel; 
using System.Text; 
using UtilityClasses; 
using Microsoft.ServiceModel.Web; 
using Microsoft.Http; 

namespace WcfRestService 
{ 
    [ServiceContract] 
    public interface IRestService 
    { 
     [OperationContract(Name = "Add")] 
     [WebGet(UriTemplate = "/")] // ** can't compile here ** 
     int Add(); 
    } 

} 

कोई सलाह हो जाएगा बहुत यह सराहना की:

यह है कि मैं क्या है।

+0

जब आप कहते हैं कि आपने इसे प्रोजेक्ट में संदर्भित किया है, तो क्या आपने System.ServiceModel या System.ServiceModel.Web का संदर्भ दिया था? वे अलग हैं और आपको System.ServiceModel.Web – alanquillin

+0

के लिए एक परियोजना संदर्भ की आवश्यकता है यह अजीब चीज है - मैंने पहले परियोजना संदर्भों के रूप में दोनों को जोड़ा। फिर मैं अपने कोड पर गया और पहले System.ServiceModel पर एक प्रयोग कथन जोड़ा और यह पहचाना गया लेकिन System.ServiceModel.Web पहचाना नहीं गया है। – user118190

+0

क्या आपने सिस्टम.ServiceModel के लिए उपयोग को जोड़ने का प्रयास किया है, फिर [Web.WebGet (UriTemplate = "/")] जैसा दिखने के लिए अपने सजावट को बदल रहा है? – alanquillin

उत्तर

9

यह मेरे साथ भी हुआ।

मैं ऐसा किया:

  1. संदर्भ
  2. से हटाएं System.Service.Web बिल्ड
  3. स्वच्छ परियोजना
  4. संदर्भ
  5. को System.Service.Web जोड़े बिल्ड

.. और वीएस ने इसे पाया ??

+0

अजीब, लेकिन कुछ गलत हो गया होगा ... – user118190

+0

कृपया @ होसम जवाब के लिए नीचे स्क्रॉल करें, शायद यह वास्तविक जवाब है। – guiomie

28

आपको सिस्टम.ServiceModel.Web DLL का संदर्भ देने की आवश्यकता है।

अपनी परियोजना में 'संदर्भ' फ़ोल्डर राइट-क्लिक करें और 'संदर्भ जोड़ें' चुनें। System.ServiceModel.Web पर नीचे स्क्रॉल करें और 'ठीक' पर क्लिक करें।

+0

यही मैंने पहले किया था - और फिर मैं अपने कोड पर गया और पहले System.ServiceModel पर एक उपयोग कथन जोड़ा और यह पहचाना गया लेकिन System.ServiceModel.Web पहचाना नहीं गया है। अजीब सही ?! – user118190

+0

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

+0

अपनी परियोजना की सफाई करने और फिर निर्माण करने का प्रयास करें। विजुअल स्टूडियो – AgileJon

1

System.ServiceModel.Web का उपयोग कर;

+0

यह मेरे लिए काम किया। मुझे प्रोजेक्ट को System.ServiceModel.Web संदर्भ जोड़ना था और इसे आयात करना था। –

26

बस एक विचार था, आप अपने प्रोजेक्ट को .NET क्लाइंट प्रोफाइल पर लक्षित कर सकते हैं जो सीमित नामस्थान का खुलासा करता है। आपको अपने प्रोजेक्ट गुणों पर लक्ष्य ढांचे की सेटिंग की जांच करनी पड़ सकती है।

मुझे सामना करना पड़ा है कि डब्ल्यूसीएफ परियोजना के साथ System.ServiceModel.Web नहीं मिला है जब तक कि मैंने डिफ़ॉल्ट रूपरेखा सेटिंग्स को बदल दिया।.NET फ्रेमवर्क 4

और नहीं: .NET फ्रेमवर्क 4 ग्राहकों का प्रोफाइल, या किसी भी कम नेट संस्करण

HTH

+4

यह सही उत्तर है। आपको प्रोजेक्ट सेटिंग्स बदलनी चाहिए ताकि लक्ष्य ".NET Framework X" हो, न कि ".NET Framework X क्लाइंट प्रोफ़ाइल"। फिर आप अपने प्रोजेक्ट के संदर्भ को .NET टैब से जोड़ सकते हैं। –

8

"परियोजना गुण" में सुनिश्चित करें कि आपके "लक्ष्य रूपरेखा" के लिए सेट है।

इसके अलावा, वी.एस. संभावित उपयोग 2010

--DBJ

+0

यह भी सही जवाब है। इसे @ होसम एक के साथ विलय किया जाना चाहिए। –

3
  1. सही परियोजना के नाम पर क्लिक करें और गुण चुनें यदि।
  2. लक्ष्य फ्रेमवर्क को .NET Framework 4 में बदलें।
  3. संदर्भों पर राइट क्लिक करें और संदर्भ जोड़ें चुनें।
  4. और फिर आप System.ServiceModel.Web देख सकते हैं।

डिफ़ॉल्ट रूप से लक्ष्य ढांचा .NET Framework 4 क्लाइंट प्रोफाइल, है ताकि आपको System.ServiceModel.Web नहीं मिल सके।

+0

इस सवाल को पूर्व .Net 4.0 से पूछा गया था – Skuld

1

मुझे एक ही समस्या थी।

System.ServiceModel.Web

और इस कोड लाइन:

मैं इस लापता संदर्भ जोड़ लिया है

using System.ServiceModel.Web; 

और सभी हल मिल गया! ;)

0

मेरे मामले में मेरी परियोजना सेवा वर्ग के डिजाइनर दृश्य में इस चेतावनी के बावजूद निर्माण कर रही थी। वास्तव में एक बड़ा मुद्दा नहीं है, लेकिन अभी भी बहुत परेशान है। यह महसूस किया गया कि यह केवल रेसपर खेल रहा था - जब मैंने एक नई डब्ल्यूसीएफ सेवा जोड़ा, तो System.ServiceModel के संदर्भ को VS द्वारा स्वचालित रूप से जोड़ा गया था जब उसने अपने आंतरिक कैश को अपडेट नहीं किया था। मैं में वास्तविक समय कोड विश्लेषण बंद कर दिया:

उपकरण -> विकल्प -> Resharper परम -> विकल्प -> कोड Inspection-> सेटिंग्स -> सक्षम करें कोड विश्लेषण

यह बनाया बहाल वीएस कोड विश्लेषण में, और समस्या तुरंत तय की गई थी।

आप में कैश को साफ़ करने ReSharper कोड विश्लेषण का उपयोग कर रखना चाहते हैं, तो:

उपकरण -> विकल्प -> Resharper परम -> विकल्प -> पर्यावरण -> जनरल -> साफ कैश

समस्या को हल भी कर सकता है।

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