8

इस प्रकार मैं दो सेवा अनुबंध घोषणा की है के साथ विभिन्न सेवा अनुबंध में दो आपरेशन ठेके को लागू करने:WCF वर्ग में एक ही नाम

[ServiceContract] 
public interface IContract1 
{ 
    [OperationContract] 
    double Add(int ip); 
} 

[ServiceContract] 
public interface IContract2 
{ 
    [OperationContract] 
    double Add(double ip); 
} 

मैं एक वर्ग है जो इन दो ठेके को लागू करता है। मैंने दोनों अनुबंधों के लिए दो अंतराल बनाए हैं। लेकिन मैं ग्राहक कोड से सेवा तक पहुंच नहीं पा रहा हूं। यह एक बड़ी त्रुटि प्रदर्शित करता है जब मैं सेवा संदर्भ अद्यतन करने के लिए के रूप में की कोशिश:

मेटाडाटा एक त्रुटि है कि हल नहीं किया जा सकता है .... कोई अंतिम बिंदु पर ... सुन रहा था, आदि

मुझे पता है कि आपके पास एक ही नाम के साथ दो OperationContract एस नहीं हो सकते हैं, लेकिन क्या समान नाम के साथ अलग-अलग सेवा अनुबंधों में दो ऑपरेशन अनुबंध होना संभव है लेकिन अलग-अलग हस्ताक्षर?

उत्तर

13

यदि एक सेवा दोनों अनुबंधों को लागू करती है तो आपको अपने ऑपरेशन अनुबंधों के लिए अद्वितीय नाम देना चाहिए।

[ServiceContract] 
public interface IContract1 
{ 
    [OperationContract(Name="AddInt")] 
    double Add(int ip); 
} 

[ServiceContract] 
public interface IContract2 
{ 
    [OperationContract(Name="AddDouble")] 
    double Add(double ip); 
} 
+0

तब मैं विधि का उपभोग कैसे करूं? यह क्लाइंट कोड में केवल एक ही विधि दिखाता है। – Archie

+0

समझ गया कि, मैं दो सेवा अनुबंधों के अनुरूप दो क्लाइंट बनाएगा। धन्यवाद। – Archie

6

आप निम्न का उपयोग कर सकते हैं।

[ServiceContract] 
public interface IContract1 
{ 
    [OperationContract(Name = "Add1")] 
    double Add(int ip); 
} 

[ServiceContract] 
public interface IContract2 
{ 
    [OperationContract(Name = "Add2")] 
    double Add(double ip); 
}