c# - XmlTextReader - XML reading old content after file update -
इसलिए मैं " Updater.exe " का प्रयोग कर रहा हूं जो एक्सएमएल फ़ाइल को मेरे वेबसर्वर पर रखें अपडेटर जांचता है कि यदि प्रोग्राम का एक नया संस्करण उपलब्ध है, तो स्थानान्तरण को नई फ़ाइल (पुराने को बदलकर) और उसे चलाता है। (फ़ाइल का नाम बेतरतीब है क्योंकि मैं इसे सीधे चलाने के लिए नहीं चाहता हूं, उसे अपॉडरेटर (जो इसे p.StartInfo.UseShellExecute = false;) की मदद से चलाता है) को छोड़ना होगा।
I अब एक बहुत ही अजीब "बग" का सामना करना पड़ा है या मुझे इसे कैसे कॉल करना चाहिए।
चलिए कहते हैं कि मैं 1 सप्ताह के बाद एक नया संस्करण बना सकता हूं। मैं आवेदन की असेंब्ली जानकारी और XML फ़ाइल संस्करण को भी अद्यतन करता हूं। अब जब मैं UPDATER.exe चलाता हूं, तो वह नया नवीनीकृत XML सामग्री नहीं देखता है, उसे बताए हुए एक नया संस्करण उपलब्ध है। जैसा कि मैं फ़ाइल गर्त को अपने वेब ब्राउजर की जांच करना चाहता था, वह यह भी ओल्ड सामग्री (पिछले संस्करण) का अर्थ दिखा रहा था, जिसका मतलब है कि आवेदन DATE तक गलत है।
के बाद मैं "ताज़ा करें" बटन दबाया क्रोम, मैंने अद्यतन किया गया था और अपडेटेटर.एक्सई फिर से चल रहा था ठीक काम किया
मेरे पास कोई आईडिया नहीं है जो वास्तव में चल रहा है पर। एमएसडीएन से XMLTextReader वर्ग की जांच करने पर यह कहते हैं:
एक रीडर का प्रतिनिधित्व करता है फास्ट, गैर-कैश्ड, फ़ॉरवर्ड-केवल ऐक्सेस प्रदान करता है। हाँ, मुझे बता रहे इंटरनेट पर खोज करने के लिए मुझे "कैशिंग" समस्याओं के लिए तलाश करना चाहिए, जब मुझे क्लास पढ़ा विवरण। किसी भी अद्यतन की इतनी लंबी अवधि के बाद ब्राउज़र में ताज़ा करने के बाद, सभी अगले अपडेट बस ठीक काम कर रहे हैं। ऐसा लगता है कि "बड़ा विराम" हमेशा इस समस्या को बना देता है।
वैसे भी, मुझे इसके समाधान का पता लगाना अच्छा लगेगा। शायद यह सिर्फ मुझे यह समस्या है। लेकिन मैं इस समस्या को आवेदन का उपयोग करने वाले उपयोगकर्ताओं से देखना नहीं चाहता। उनके पास कुछ भी "रिफ्रेश" करने का समय या ज्ञान नहीं है यह सिर्फ काम करना है।
एक्सएमएल उदाहरण यहाँ है:
& lt;? Xml संस्करण = "1.0" एन्कोडिंग = "यूटीएफ -8" स्टैंडअलोन = "हां" ? & gt; & LT; आवेदन & gt; & LT; संस्करण & gt; 2.0.0.16 & lt; / संस्करण & gt; & LT; यूआरएल & gt; http: //server/folder/gibberish.extension< / यूआरएल & gt; & Lt; / आवेदन & gt;
और कुछ कोड जो मैं XML को पढ़ने के लिए उपयोग करता हूं।
संस्करण newVersion = null; स्ट्रिंग xmlUrl = "http: //server/folder/file.xml"; XmlTextReader रीडर = नल; {Reader = new XmlTextReader (xmlUrl) का प्रयास करें; reader.MoveToContent (); स्ट्रिंग तत्वनाम = ""; यदि ((reader.NodeType == XmlNodeType.Element) & amp; amp; (रीडर। नाम == "एप्लिकेशन")) {जबकि (reader.Read ()) {if (reader.NodeType == XmlNodeType.Element) {elementName = रीडर। नाम; } Else {if ((reader.NodeType == XmlNodeType.Text) & amp; amp; amp;; (reader.HasValue)) {स्विच (elementName) {केस "संस्करण": newVersion = नया संस्करण (reader.Value); टूटना; मामले "यूआरएल": डाउनलोड यूआरएल = रीडर। मूल्य; टूटना; }}}}}} पकड़ (अपवाद ईई) {// कैच त्रुटि}
मैंने इस समस्या को वर्णन करने के लिए अपनी पूरी कोशिश की, जैसा कि मैं कर सकता हूँ (अंग्रेजी भाषा में मेरे सरल ज्ञान के साथ) यहाँ। और मैं कोई भाग्य के साथ इंटरनेट खोज की। मुझे उम्मीद है कि इसका परिणाम डुप्लिकेट में नहीं होगा। अगर आपके पास कोई और सवाल है, तो पूछने में संकोच न करें मैं निश्चित रूप से आपको इस अजीब पहेली को हल करने के लिए सभी जानकारी दे दूँगा।
सबसे अच्छा संबंध, मिकई
सबसे पहले जो मेरे मन में आती है वह सीडीएन है क्या आप किसी भी तरह के सीडीएन जैसे बादल फ्लायर का उपयोग करते हैं? क्लाउडफ़्लैयर और इसी तरह के सीडीएन आपकी सामग्री को थोड़े समय के लिए कैश करते हैं जिससे यह प्रभाव आता है।
Comments
Post a Comment