2009-02-26 11 views
15

पर सर्विसकंट्रैक्ट नहीं देख रहा है मैं डब्ल्यूसीएफ के लिए नया हूं और अपनी पहली सेवा चलाने की कोशिश कर रहा हूं। मैं करीब हूँ लेकिन इस समस्या पर अटक गया।डब्ल्यूसीएफ सेवा - रनटाइम इंटरफेस

मेरी इंटरफ़ेस परिभाषा फ़ाइल में, मैं यह है:

[ServiceContract(Namespace="http://mysite.com/wcfservices/2009/02")]  
    public interface IInventoryService 
    { 
     [OperationContract] 
     string GetInventoryName(int InventoryID); 
    } 

तब मैं अपने वर्ग फ़ाइल (सेवा के लिए) है कि यह विरासत में:

public class InventoryService : IInventoryService 
    { 
     // This method is exposed to the wcf service 
     public string GetInventoryName(int InventoryID) 
     { 
      return "White Paper"; 
     } 

अंत में, मेरी होस्ट परियोजना में मैं इस राशि:

ServiceHost host = new ServiceHost(typeof(Inventory.InventoryService)); 
    host.AddServiceEndpoint(typeof(Inventory.InventoryService), new NetTcpBinding(), 
     "net.tcp://localhost:9000/GetInventory"); 
    host.Open(); 

सब कुछ ठीक संकलित, और मेजबान ख सेवा समाप्ति बिंदु जोड़ने के लिए, यह जाता है जब इसके साथ ombs: "अनुबंध प्रकार सूची। इन्वेंटरी सेवा सेवाContractAttribute के साथ जिम्मेदार नहीं है। एक वैध अनुबंध को परिभाषित करने के लिए, निर्दिष्ट प्रकार (या तो अनुबंध इंटरफ़ेस या सेवा वर्ग) को ServiceContractAttribute के साथ जिम्मेदार ठहराया जाना चाहिए। "

मुझे पता है कि मुझे यहां कुछ आसान याद आ रही है। मेरे पास इंटरफ़ेस स्पष्ट रूप से सेवा अनुबंध के रूप में चिह्नित है और वहाँ होस्ट परियोजना में है कि परियोजना के लिए एक संदर्भ है

उत्तर

25
ServiceHost host = new ServiceHost(typeof(Inventory.InventoryService)); 
host.AddServiceEndpoint(typeof(Inventory.InventoryService), new NetTcpBinding(), 
    "net.tcp://localhost:9000/GetInventory"); 
host.Open(); 

अपने ServiceContract विशेषता इंटरफेस नहीं ठोस वर्ग पर है, तो निम्न प्रयास करें:।

ServiceHost host = new ServiceHost(typeof(Inventory.InventoryService)); 
host.AddServiceEndpoint(typeof(Inventory.IInventoryService), new NetTcpBinding(), 
    "net.tcp://localhost:9000/GetInventory"); 
host.Open(); 
+0

जब मैं कोशिश है कि यह मुझे देता है ArgumentException, "ServiceHost केवल समर्थन एस क्लास सेवा प्रकार। " –

+0

गलत स्विच किया गया - AddServiceEndpoint कॉल को इंटरफ़ेस में बदलें, ServiceHost को कक्षा के रूप में रखें। – Brian

+0

समझ गया! इसलिए मैं कंक्रीट क्लास में गुजरने वाले सर्विसहोस्ट को तत्काल कर रहा हूं, लेकिन मैं अंतराल के साथ एंडपॉइंट या बाइंडिंग को परिभाषित कर रहा हूं, जो वास्तव में अनुबंध परिभाषा है (यानी कक्षा नहीं)। मैं अंततः इस के लटका मिल जाएगा। धन्यवाद ब्रायन और एंड्रयू। –

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