2011-03-14 3 views
5

मेरे पास डेल्फी सेवा के आधार पर बनाया गया .NET WCF क्लाइंट/प्रॉक्सी है। डेल्फी सेवा एक प्रारूप में एसओएपी संदेश प्रदान कर रही है जो मेरा ग्राहक संसाधित करने में असमर्थ रहा है।कारण .नेट डब्ल्यूसीएफ क्लाइंट दस्तावेज़/लिटल/डेल्फी सेवा के साथ लपेटकर आरपीसी/एन्कोडेड का उपयोग करने के लिए

यहां मार्गदर्शन के आधार पर: Delphi SOAP Envelope and WCF मुझे यह समझने आया है कि डब्ल्यूसीएफ "दस्तावेज/शाब्दिक/लपेटा" शैली की अपेक्षा करता है जिस तरह से संदेश क्रमबद्ध है। जैसा कि यह पता चला है, डेल्फी सेवा शैली के रूप में "आरपीसी" का उपयोग कर रही है।

मुझे अपनी शैली बदलने के लिए डेल्फी सेवा नहीं मिल सकती है।

क्या कोई तरीका है कि मैं डब्ल्यूसीएफ क्लाइंट को इसके बजाय "आरपीसी" का उपयोग करने के लिए कह सकता हूं।

संदर्भ के लिए, डेल्फी सेवा मैं के खिलाफ निर्माण कर रहा हूँ है: http://www.tntschools.com/AkiTimeTableService/wsdl/ICourses

+0

आपने क्लाइंट/प्रॉक्सी कैसे बनाया? 'सेवा संदर्भ जोड़ें' के माध्यम से या आपने इसे मैन्युअल रूप से बनाया है? –

+0

मैंने इसे बनाने के लिए "सेवा संदर्भ जोड़ें" का उपयोग किया। – Irwin

+0

नीचे दिए गए उत्तर को देखें। कृपया डब्ल्यूसीएफ क्लाइंट में मिलने वाले अपवाद का संदेश पोस्ट करें। –

उत्तर

3

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

[DebuggerStepThrough] 
[GeneratedCode("System.ServiceModel", "4.0.0.0")] 
[MessageContract(WrapperName = "GetCourseList", WrapperNamespace = "urn:CoursesIntf-ICourses", 
    IsWrapped = true)] 
public partial class GetCourseListRequest 
{ 
    [MessageBodyMember(Namespace = "", Order = 0)] 
    public string licence; 

    public GetCourseListRequest() 
    { 
    } 

    public GetCourseListRequest(string licence) 
    { 
     this.licence = licence; 
    } 
} 

प्रत्येक उत्पन्न आपरेशन अनुबंध एक निम्नलिखित के रूप में समान तरीके से सजाया गया है:

[GeneratedCode("System.ServiceModel", "4.0.0.0")] 
[ServiceContract(ConfigurationName = "ServiceReferences.ICourses")] 
public interface ICourses 
{ 
    [OperationContract(Action = "urn:CoursesIntf-ICourses#GetCourseList", ReplyAction = "*")] 
    [XmlSerializerFormat(Style = OperationFormatStyle.Rpc, SupportFaults = true, 
     Use = OperationFormatUse.Encoded)] 
    [ServiceKnownType(typeof(TCourse))] 
    GetCourseListResponse GetCourseList(GetCourseListRequest request); 

    // Remaining operation contracts omitted 
} 

चेक Reference.cs यह निर्धारित करने के लिए कि आपका संदेश और ऑपरेशन अनुबंध समान तरीके से सजाए गए हैं या नहीं। यदि वे हैं, तो मुद्दा कहीं और है। अपवाद संदेश समस्या को ट्रैक करने में सहायक होगा (उदाहरण के लिए यह एसओएपी संदेश लौटाए गए तत्वों का क्रम हो सकता है)।

+0

मैं इसे स्वीकार कर रहा हूं क्योंकि मैंने गलत सवाल पूछा है, लेकिन यह उस प्रश्न का उत्तर है। – Irwin

+0

@ इरविन: मुद्दा क्या था? –

+0

ठीक है, यह पता चला है कि आरपीसी शैली के लिए कॉन्फ़िगर किया गया डेल्फी सेवा, तत्वों को एक क्रम में भेज रहा था कि मेरा डब्ल्यूसीएफ घटक समझ में नहीं आया। (बिल्ली, मैं अभी भी समझने की कोशिश कर रहा हूं कि क्या भेजा जा रहा है)। जैसा कि मुझे और स्पष्टता मिलती है, मैं इस टिप्पणी धागे को अपडेट करूंगा। – Irwin

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