मेरे पास एक सी # डब्ल्यूसीएफ आरईएसटी सेवा है जो एक्सएमएल में क्रमबद्ध बुकमार्क के साथ HTTP पोस्ट अनुरोध भेजकर एक बुकमार्क जोड़ने की अनुमति देती है। मैंने सेवा के लिए ऑपरेशन अनुबंध निर्दिष्ट किया है, जो एक्सएमएल उठाता है और मेरे लिए ऑब्जेक्ट स्वचालित रूप से deserialises। मेरी समस्या यह है कि deserialisation केवल सही ढंग से काम करता है अगर अनुरोध में एक्सएमएल तत्व वर्णानुक्रम में दिए गए हैं, और किसी भी तत्व के लिए मान आबादी से बाहर नहीं हैं।क्या डब्लूसीएफ आरईएसटी सेवाएं मनमानी तत्व ऑर्डर के साथ एक्सएमएल संदेशों के deserialisation का समर्थन कर सकते हैं?
This behaviour has been reported elsewhere।
मुझे यह असंतोषजनक लगता है; मैं अनावश्यक होने के लिए एक्सएमएल को एक विशिष्ट क्रम में बनाने की आवश्यकता पर विचार करता हूं, और एक प्रमुख सिरदर्द। यह सेवा के सभी ग्राहकों को जोड़ने और संभावित रूप से कठिन समस्याओं का स्रोत डीबग करने की एक प्रमुख आवश्यकता है।
क्या डब्ल्यूसीएफ को XML तत्व ऑर्डर अज्ञेयवादी होने का निर्देश देना संभव है?
स्पष्टीकरण प्रयोजनों के लिए कुछ अधिक जानकारी:
मेरे आपरेशन अनुबंध इस तरह दिखता है:
[OperationContract]
[WebInvoke(Method="POST", UriTemplate = "/{username}/bookmarks", ResponseFormat = WebMessageFormat.Xml)]
public void PostBookmark(string username, RestBookmark newBookmark);
RestMessage इस प्रकार दिखता है:
[DataContract(Name = "Bookmark", Namespace = "")]
public class RestBookmark
{
[DataMember]
public string BookmarkMd5 { get; set; }
[DataMember]
public string Url { get; set; }
[DataMember]
public string UserName { get; set; }
[DataMember]
public string Title { get; set; }
[DataMember]
public string Description { get; set; }
}
अगर मैं निम्न XML संदेश भेजते हैं, तो केवल RestMessage वस्तु के उपयोगकर्ता नाम संपत्ति से संबंधित जानकारी देगा जब PostBookmark() शुरू हो जाती है:
<?xml version="1.0"?><Bookmark><UserName>nick.street</UserName><Url>http://www.stackoverflow.com</Url><BookmarkMd5>f184eb3347cf94f6ce5f5fc2844e3bdd</BookmarkMd5><Description>Developer Forum</Description><Title>Stack Overflow</Title></Bookmark>
मुझे XMLSerializer का उपयोग करने का विचार पसंद है। –
मदद और स्पष्ट उत्तर के लिए धन्यवाद! –