2009-05-20 12 views
7

पर एक वेब सेवा संदर्भ जोड़ें, मैं कंसोल ऐप में एक साधारण वेब सेवा बना रहा हूं। (PersonService) इस नीचेकंसोल ऐप

im मेरी Program.cs एक अलग सांत्वना अनुप्रयोग (PersonClient) कैसे मैं यह कर सकता हूँ के लिए एक सेवा संदर्भ जोड़ने की कोशिश कर रहा है? मैंने सही क्लिक करके इसे जोड़ने का प्रयास किया, सेवा संदर्भ जोड़ें, रिफर्न इत्यादि को इंगित किया ... लेकिन यह काम नहीं करेगा।

 [DataContract] 
     public class Person 
     { 
      [DataMember] 
      public string FirstName { get; set; } 

      [DataMember] 
      public string LastName { get; set; } 

     } 

     [ServiceContract] 
     public interface IPersonLookup 
     { 
      [OperationContract] 
      Person GetPerson(int identifier); 
     } 

     public class PersonService : IPersonLookup 
     { 
      public PersonService() 
      { 
      } 
      public Person GetPerson(int identifier) 
      { 
       Person p = new Person(); 
       p.FirstName="Jane"; 
       p.LastName="Doe"; 
       return p; 
      } 



     } 


     class Program 
     { 
      static void Main(string[] args) 
      { 
       using (ServiceHost host = new ServiceHost(typeof(PersonService))) 
       { 
        WSHttpBinding binding = new WSHttpBinding(); 
        host.AddServiceEndpoint(typeof(IPersonLookup), binding, "http://localhost:9090/PersonService"); 
        host.Open(); 
        Console.WriteLine("Listening...."); 
        Console.ReadLine(); 
       } 


      } 
     } 

उत्तर

2

आपको डब्ल्यूसीएफ मेक्स एंडपॉइंट्स के बारे में पढ़ने की जरूरत है। यहां एक blog post that may help है।

+0

धन्यवाद – raklos

+0

मदद मिली है, मैं मदद कर सकता हूं। – RichardOD

0

आपके पास दो कंसोल exes हैं, जो ServiceHost चलाता है - क्या यह सही है? डिबगिंग के बिना सर्वर कंसोल चलाएं; फिर आईडीई में यूआरएल के लिए डब्ल्यूसीएफ संदर्भ जोड़ें। यह काम करना चाहिए, लेकिन जब आप मैक्स से पूछते हैं तो इसे सर्वर (आपका दूसरा कंसोल एक्सई) चलाने की आवश्यकता होती है।

+0

हाय मार्क, मैं था जो आपने कहा है और मैं करने के लिए पता बताया: http: // localhost: 9090/PersonService और यह इस त्रुटि देता है: डाउनलोड करने 'http करने में त्रुटि हुई: // स्थानीय होस्ट: 9090/PersonService '। अनुरोध HTTP स्थिति 400: खराब अनुरोध के साथ विफल रहा। मेटाडाटा में एक संदर्भ है जिसे हल नहीं किया जा सकता है: 'http: // localhost: 9090/PersonService'। मेटाडाटा में एक संदर्भ है जिसे हल नहीं किया जा सकता है: 'http: // localhost: 9090/PersonService'। यदि सेवा वर्तमान समाधान में परिभाषित की गई है, तो समाधान बनाने और फिर से सेवा संदर्भ जोड़ने का प्रयास करें। – raklos

+0

जब यह चल रहा है, तो अपने वेब ब्राउज़र में सेवा यूरी पर ब्राउज़ करने का प्रयास करें। यह आपको सेवा पृष्ठ दे सकता है जो आपको बताता है कि मैक्स कैसे सेट अप करें; हालांकि, मैं अपने सिर के ऊपर से याद नहीं कर सकता। –

+0

जब मैं http: // localhost: 9090/PersonService को इंगित करता हूं, जबकि सेवा चल रही है, यह एक पृष्ठ नहीं मिला है। – raklos

0

जब आपने webservice संदर्भ जोड़ा, तो आपने सेवा के लिए नामस्थान और 'वर्ग नाम' परिभाषित किया। आपको या तो नामस्थान संदर्भ ("FooNameSpace का उपयोग करके") जोड़ना होगा या सेवा के पूर्ण योग्य वर्ग नाम ("FooNameSpace.BarClass ws = new FooNameSapce.BarClass()") का उपयोग करना होगा;

11

समाधान:

  1. एक सांत्वना आवेदन दृश्य स्टूडियो का उपयोग बनाएँ।
  2. प्रोजेक्ट पर राइट क्लिक करें और "सेवा संदर्भ जोड़ें ..." पर क्लिक करें।
  3. विंडो पर, आपको नीचे "उन्नत" बटन मिलेगा।
  4. बटन पर क्लिक करें और यह सेवा संदर्भ सेटिंग्स विंडो खुल जाएगा। इसमें "वेब संदर्भ जोड़ें" नामक नीचे एक बटन है।
संबंधित मुद्दे