2012-04-29 20 views
14

में उपलब्ध नहीं है मैंने एक डब्ल्यूसीएफ सेवा बनाई है, लेकिन सेवा डब्लूएसडीएल मेरी कक्षाएं (जटिल प्रकार) नहीं दिखाती है।जटिल प्रकार wcf wsdl

नीचे सेवा है:

[ServiceContract] 
public interface IFedexService 
{ 
    [OperationContract] 
    ShipmentReply CreateMultiFedExShipment(RxRdShipment shipment); 

    [OperationContract] 
    ShipmentReply CreateFedExShipment(RxRdShipment shipment); 
} 

और मेरी कक्षा परिभाषा है:

[DataContract] 
public class ShipmentReply 
{ 
    [DataMember] 
    public string ReferenceNumber { get; set; } 

    [DataMember] 
    public string MasterTrackingNumber { get; set; } 

    [DataMember] 
    public List<ReplyPackage> Packages { get; set; } 

    [DataMember] 
    public bool Response { get; set; } 

    [DataMember] 
    public RxNotification Notification { get; set; } 
} 

मेरे समस्या मैं WSDL में इस ShipmentReply वर्ग नहीं मिला है। मेरी समस्या क्या है?

धन्यवाद, Arefin

उत्तर

28

हाँ, कि WCF आम बात है। डिफ़ॉल्ट रूप से, डब्ल्यूसीएफ केवल डब्लूएसडीएल में ही संचालन दिखाएगा - डेटा संरचनाओं को एक्सएसडी फाइलों में दस्तावेज किया गया है जो डब्लूएसडीएल फाइल से जुड़े हुए हैं।

मैं दांव लगा रहा हूँ अगर आप अपने डबल्यूएसडीएल को देखो, तो आप इस के लिए कुछ इसी तरह लगभग अपने डबल्यूएसडीएल के शीर्ष पर दिखाई देंगे:

<xsd:schema targetNamespace="http://tempuri.org/Imports"> 
    <xsd:import schemaLocation="http://localhost:8000/HelloIndigo?xsd=xsd0" 
       namespace="http://tempuri.org/" /> 
    <xsd:import schemaLocation="http://localhost:8000/HelloIndigo?xsd=xsd1" 
       namespace="http://schemas.microsoft.com/2003/10/Serialization/" /> 
    <xsd:import schemaLocation="http://localhost:8000/HelloIndigo?xsd=xsd2" 
       namespace="http://schemas.datacontract.org/2004/07/WCF_Simple_Service" /> 
</xsd:schema> 

ये जरूरत XSD फ़ाइलों के लिंक हैं - प्रकार में यूआरएल आपके ब्राउज़र में है, और उनमें से एक (संभवत: उच्चतम संख्या वाला एक - लेकिन उसमें होना आवश्यक नहीं है) में आपकी जटिल प्रकार की परिभाषा होगी।

http://localhost:8080/HelloIndigo?xsd=xsd2 

यह आपको अपनी जटिल प्रकार के लिए XSD देना चाहिए

यह सुविधा कुछ मुद्दों का कारण है:

आपके ब्राउज़र में इस URL (तुम्हारे पास क्या है करने के लिए बंदरगाह और वास्तविक URL अनुकूलन) की कोशिश करो पिछले वर्षों में - कुछ ग्राहक इस (100% सही और पूरी तरह से ठीक) वाक्यविन्यास से निपट नहीं सकते हैं। तो .NET 4.5 में, डब्ल्यूसीएफ के पास सभी एक्सएसडी तत्वों सहित आपके पूरे डब्लूएसडीएल को आउटपुट करने के लिए एक नया पैरामीटर (...?singlewsdl) होगा - उस पर कुछ और जानकारी के लिए What's new in WCF 4.5? A single WSDL file देखें।

+0

आप सही हैं, धन्यवाद। क्या आप मुझे एक बात बता सकते हैं .. जब मैं उस वर्ग की संपत्ति का उपयोग करता हूं जो डाटाकंट्रैक्ट नहीं है, तो मुझे __ बैकिंगफिल्ड का उपयोग करना होगा, क्या आपको कोई लाभ या कुछ और पता है .. –

+0

यदि आप '[DataContract] का उपयोग कर रहे हैं और [डेटामेम्बर] 'गुण - उन्हें हर जगह उनका उपयोग करें! यह सबसे आसान और सुरक्षित तरीका है - कुछ और हैक है। –

+1

बहुत बहुत धन्यवाद। –

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