2012-03-25 11 views
13

मैं एक सेवा WcfService2 (मूल मुझे पता है) का नाम दिया है जो एक IService.cs एक सार्वजनिक इंटरफेस के साथ दाखिल होते हैं:ServiceHost केवल श्रेणी सेवा प्रकार का समर्थन करता

namespace WcfService2 
{ 
    [ServiceContract] 
    public interface IService1 
    {  
     [OperationContract] 
     [WebGet(UriTemplate = "/{value}")] 
     string GetData(string value);    
    } 
} 

मैं तो मेरे सार्वजनिक वर्ग Service1.svc.cs है फ़ाइल जो इतनी तरह मूल्य के लिए एक स्ट्रिंग रिटर्न:

namespace Host 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      WebHttpBinding binding = new WebHttpBinding(); 
      WebServiceHost host = 
      new WebServiceHost(typeof(IService1)); 
      host.AddServiceEndpoint(typeof(IService1), 
      binding, 
      "http://localhost:8000/Hello"); 
      host.Open(); 
      Console.WriteLine("I DONT LIKE REST!"); 
      Console.WriteLine("Press <RETURN> to KILL REST FOR GOOD"); 
      Console.ReadLine(); 
     } 
    } 
} 
:

namespace WcfService2 
{ 
    public class Service1 : IService1 
    { 
     public string GetData(string value) 
     { 
      return string.Format("You entered: {0}", value); 
     } 
    } 
} 

मैं अभी की तरह एक सांत्वना अनुप्रयोग के साथ इस सेवा की मेजबानी के लिए कोशिश कर रहा हूँ

लेकिन मुझे इसे चलाने के बाद त्रुटि मिली:

सर्विसहोस्ट केवल कक्षा सेवा प्रकारों का समर्थन करता है।

तो यह स्पष्ट रूप से मेरे आईएसईसी सार्वजनिक इंटरफेस प्रकार से संबंधित है। लेकिन मुझे नहीं पता कि इसे और कैसे बनाना है, जब मैंने पहली बार WCF Service application बनाया था, तो यह आपको दो मानक फाइलें आईएस सर्विस और सर्विस.svc फाइलें देता है यदि मैं या तो हटा देता हूं, और केवल वेब को जोड़ने का प्रयास करते समय इस समाधान को एक वर्ग में कार्यान्वित करता हूं स्थानीय आत्मा में सेवा कुछ भी नहीं मिला है।

क्या होस्ट कोड के साथ पहेली करने का कोई तरीका है?

+0

एक और उत्तर की कोशिश करना @ http://stackoverflow.com/q/19306395/16391 – StingyJack

उत्तर

25

मेरा सुझाव है कि अगर आप इसे परिवर्तित:

WebServiceHost host = new WebServiceHost(typeof(IService1)); 

यह करने के लिए:

WebServiceHost host = new WebServiceHost(typeof(Service1)); 
+1

मुझे यह त्रुटि मिलती है यदि मैं ऐसा करता हूं: 'अनुबंध प्रकार WcfService2.Service1 को ServiceContractAttribute के साथ जिम्मेदार नहीं ठहराया गया है। एक वैध अनुबंध को परिभाषित करने के लिए, निर्दिष्ट प्रकार (या तो अनुबंध इंटरफ़ेस या सेवा श्रेणी) को ServiceContractAttribute.' –

+1

@Garrith के साथ जिम्मेदार ठहराया जाना चाहिए: आपको पोस्ट कोड के साथ पहली त्रुटि नहीं मिलनी चाहिए। फाइलों को हटाने के बारे में आपके ramblings इस में एक हिस्सा खेल सकते हैं। –

+3

कोई भी जो इस उत्तर को पढ़ता है, कृपया यह भी देखें: http://stackoverflow.com/questions/9864006/servicecontractattribute-error-on-simple-wcf- सेवा WebServiceHost के रूप में बनने योग्य सेवा 1 है और AddServiceEndpoint IService1 है! –

4

आपको सेवा को कार्यान्वित करने वाले वर्ग के साथ WebServiceHost बनाना चाहिए;

WebServiceHost host = new WebServiceHost(typeof(Service1)); 

उदाहरण के लिए here पढ़ें।

+0

कृपया देखें है Will Marcouliers जवाब के तहत जवाब। –

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

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