2010-05-31 11 views
70

मैं एक एप्लिकेशन (क्लाइंट) को एक खुला डब्ल्यूसीएफ सेवा से कनेक्ट करने की कोशिश कर रहा हूं, लेकिन एप्लिकेशन कॉन्फ़िगरेशन फ़ाइल के माध्यम से नहीं, बल्कि कोड में।किसी क्लाइंट को डब्लूसीएफ सेवा में प्रोग्रामेटिक रूप से कैसे कनेक्ट करें?

मुझे यह करने के बारे में कैसे जाना चाहिए?

+1

किसी के लिए यह ऊपर खोज, इस जवाब पर एक नज़र डालें: http://stackoverflow.com/a/839941/592732 – MarioVW

उत्तर

101

आपको ChannelFactory कक्षा का उपयोग करना होगा।

यहाँ एक उदाहरण है:

var myBinding = new BasicHttpBinding(); 
var myEndpoint = new EndpointAddress("http://localhost/myservice"); 
var myChannelFactory = new ChannelFactory<IMyService>(myBinding, myEndpoint); 

IMyService client = null; 

try 
{ 
    client = myChannelFactory.CreateChannel(); 
    client.MyServiceOperation(); 
    ((ICommunicationObject)client).Close(); 
} 
catch 
{ 
    if (client != null) 
    { 
     ((ICommunicationObject)client).Abort(); 
    } 
} 

संबंधित संसाधन:

+3

ग्रेट, धन्यवाद। एक अतिरिक्त के रूप में, यहां आपके आवेदन में IMYService ऑब्जेक्ट का उपयोग करने का तरीका बताया गया है: http://msdn.microsoft.com/en-us/library/ms733133.aspx – Andrei

+0

आपको 'क्लाइंट' को' IClientClient' में डालना चाहिए हालांकि इसे बंद करने के लिए आदेश। – Dyppl

+0

मेरे उदाहरण में मैं मान रहा हूं कि 'IMYService' इंटरफ़ेस [System.ServiceModel.ICommunicationObject] से प्राप्त होता है (http://msdn.microsoft.com/en-us/library/system.servicemodel.icommunicationobject.aspx)। मैंने यह स्पष्ट करने के लिए नमूना कोड संशोधित किया। –

6

तुम भी क्या "सेवा संदर्भ" उत्पन्न कोड

करता है क्या कर सकते हैं

कहाँ IServiceX अपने WCF सेवा अनुबंध है

फिर अपने ग्राहक कोड:

var client = new ServiceXClient(new WSHttpBinding(SecurityMode.None), new EndpointAddress("http://localhost:911")); 
client.ServiceXWork("data param", "otherParam param"); 
संबंधित मुद्दे