मैंने आज डब्ल्यूसीएफ deserialization में त्रुटियों का सामना करना शुरू कर दिया है - कोड में जो अपरिवर्तित और महीनों के लिए काम कर रहा है।डब्लूसीएफ deserialization में XmlException: "स्वचालित संपत्ति बैकिंग फ़ील्ड्स में नाम '<' 'से शुरू नहीं हो सकता है
मुद्दा यह है कि मुझे रनटाइम XmlException
कह रहा है कि 'नाम <' चरित्र 'से शुरू नहीं हो सकता है। मैंने .NET स्रोत में डीबग किया है, और ऐसा लगता है कि त्रुटि हमारे डब्ल्यूसीएफ सेवा कॉल से वापसी वस्तुओं को deserializing में है। इन ऑब्जेक्ट्स को स्वचालित गुणों का उपयोग करके परिभाषित किया जाता है, और ऐसा लगता है कि बैकिंग फ़ील्ड को <MyProperty>k_BackingField
जैसे नाम दिए गए हैं, जहां XmlException आ रहा है।
मैंने कुछ अन्य संदर्भ ऑनलाइन देखे हैं जहां समाधान स्वीकार करते हैं "मैंने अपने गुणों को स्वचालित गुणों का उपयोग न करने के लिए बदल दिया है", जो वास्तव में मेरे लिए स्वीकार्य नहीं है, क्योंकि मेरे पास 100 वस्तुओं को बदलने के लिए , (उनके बीच गुणों के 1000s के साथ)। साथ ही, यह वही कोड ठीक काम कर रहा था जब मैंने पिछले सप्ताह इसे चलाया था, और ऐसा लगता है कि सभी धारावाहिक डीटीओ को प्रभावित नहीं किया जा रहा है, केवल कुछ ही।
इसे और भी निराशाजनक बनाने के लिए, यह हल्के से अस्थायी लगता है। इस सुबह अवसर पर, कोई अपवाद फेंक दिया गया है ...!
प्रश्न;
- यह समस्या अचानक अपरिवर्तित कोड और अपरिवर्तित ढांचे स्रोत में क्यों दिखाई दे रही है?
- पूरी तरह कार्यान्वित गुणों का उपयोग करने के लिए सभी डीटीओ को संशोधित किए बिना मैं इसे कैसे ठीक करूं?
अद्यतन: एक दिन बाद या ठीक काम कर रहा तो, इस मुद्दे को दोबारा प्रकट किया है - कोई कारण नहीं मैं मिल सकता है क्यों कि यह काम करेगा/काम नहीं/काम फिर से, लेकिन यहाँ हम कर रहे हैं।
मैंने ServiceKnownType
विशेषता का उपयोग करके मेरे सेवा नियंत्रणों पर मेरे कुछ कोड से संबंधित होने के लिए समस्या को और नीचे ट्रैक किया है, जिसका उपयोग धारावाहिककरण के लिए ज्ञात प्रकारों को परिभाषित करने के लिए किया जाता है। ऐसा लगता है कि हालांकि त्रुटियों के साथ रिपोर्ट किए जाने वाले प्रकार सेवा कॉल का हिस्सा भी नहीं हैं, मैं उस समय बना रहा हूं, यह त्रुटि उन प्रकारों पर हो रही है जो इस ज्ञात प्रकार के प्रकाशन 'व्यवहार का हिस्सा हैं।
समस्या तब होती है जब मैं कुछ सेवा व्यवहार लागू करने के लिए कुछ प्रॉक्सी निर्माण कोड का उपयोग करता हूं;
IOperationBehavior innerBehavior = new PreserveReferencesOperationBehavior(
description, this.preserveReferences, this.maxItemsInObjectGraph);
innerBehavior.ApplyClientBehavior(description, proxy);
मैं ApplyClientBehavior
कोड डीबग कर सकते हैं नहीं के रूप में यह System.ServiceModel
का हिस्सा है (या कर सकते हैं मैं?), लेकिन यह है कि विधि में कुछ सभी प्रकार मैं अपने ServiceKnownType
विशेषता का उपयोग कर प्रकाशित किया है मान्य करने के लिए कोशिश कर रहा है, और में से कुछ पर टूट रहा है उन्हें XmlException
के साथ। मेरे पास कोई विचार नहीं है कि क्यों कुछ प्रकार विफल रहे हैं - और केवल उनके गुणों के कुछ के लिए।
यह उन प्रकारों का एक उदाहरण है जो उनके खिलाफ त्रुटियों की रिपोर्ट कर रहे हैं; ><Id>k_BackingField cannot start with '<'
ताकि कक्षा में विवादास्पद कुछ भी नहीं है, और कोई विरासत पर विचार करने के -
[Serializable]
public class MyDataObject
{
public ActivitySession(string id)
{
this.Id = id;
this.IsOpen = true;
}
public string Id { get; set; }
public bool IsValid { get; set; }
}
अपवाद Id
के खिलाफ एक त्रुटि की सूचना दी। यह एक सेवा अनुबंध का भी हिस्सा नहीं है, केवल इसे पहले क्रमबद्ध करने के लिए ज्ञात प्रकार के रूप में प्रकाशित किया गया था।
यह अब काफी गूढ़ हो रहा है, इसलिए मुझे जवाब की उम्मीद नहीं है, लेकिन यह समस्या अपडेट हो रही है।
क्या आप नमूना डेटाकंट्रैक्ट पोस्ट कर सकते हैं? –
मैं इसे आगे बढ़ाने की कोशिश करूंगा जहां समस्या हो रही है। वर्तमान में, उसने फिर से काम करने का फैसला किया है ... :-( –
इस समस्या को नवीनतम के साथ अपडेट किया गया है क्योंकि समस्या पुन: संसाधित हो रही है। मैंने अलग-अलग प्रकारों को त्रुटियों के रूप में रिपोर्ट क्यों किया है ... –