c# - Get structure back from Cache fails with cast error when types looks the same -


मेरे पास निम्न संरचना है:

  struct someData {public bool check; सार्वजनिक स्ट्रिंग पाठ; } ... कुछ डेटा एसडी = नया कुछ डेटा () {चेक = सच, पाठ = "बस परीक्षण"}; कैश.इन्सर्ट (कैशइंड, एसडी, रिक्त, कैश। एबसोल्यूट एक्स्पिरेशन, टाइमस्पेन। फ्रॉम मिनिट्स (90));  

फिर बाद में कोड पर, मैं कैश से डेटा पुनर्प्राप्त करना चाहता हूं, लेकिन मुझे अमान्यकैस्ट अपवाद प्राप्त होता है:

  यदि (कैश [कैशइंड]! = Null) {someData sd = (someData) कैश [कैशइंड]; // यहाँ त्रुटि  

अगर मैं यह कोशिश करता हूं:

  कुछ डेटा एसडी = कैश [कैशआईंड ] कुछ डेटा के रूप में;  

मुझे मिल रहा है:

ऑपरेटर के रूप में एक संदर्भ प्रकार या नल योग्य प्रकार के साथ प्रयोग किया जाना चाहिए ('ASP._dev_pull_aspx.someData' एक गैर रिक्त है

  1. लोड करें पृष्ठ (नहीं)
  2. इसे ठीक करें
  3. इसे पुनः लोड करें (कैश्ड) -> सबकुछ ठीक है
  4. पृष्ठ में कहीं और इसके साथ संबंधित कोड को बदलें - अपवाद प्राप्त करें <
  5. यह कैश को रीसाइक्लिंग फिक्स इसे (जब तक कि मैं कोड को फिर से बदलूंगा)

नोट: मेथडमन और माइकल हम्सल्सिन के लिए स्पष्टीकरण के लिए धन्यवाद जैसा कि विफलता -, लेकिन कलाकारों को करने में विफलता अभी भी स्पष्ट नहीं है, क्योंकि यह अधिकांश समय काम करता है।

ऐसा लगता है कि आपको पेज के पुन: संकलन के परिणाम के रूप में नामित प्रकार के साथ 2 भिन्न प्रकार प्राप्त होते हैं और इसलिए आप बहुत समान नाम / संरचना के बावजूद किसी दूसरे को नहीं डाल सकते।

< P> क्यों:

  • । नेट प्रकार पहचान में पूर्ण नाम और विधानसभा पहचान (नाम) जैसे "System.dll v4.0.0.0 से System.Int32" शामिल है।
  • एएसएक्सएक्स / सीएसएचटीएमएल पृष्ठ बदलते समय नए विधानसभा को यादृच्छिक नाम मिलते हैं, लेकिन एपी-डोमेन (विशेष रूप से डिबग कॉन्फ़िगरेशन में) की रीसायकल को नहीं करता है ट्रिगर नहीं करता है, जब तक कि "गतिशील रूप से संकलित विधानसभाओं की संख्या" हिट हो जाती है (अच्छा लिंक अच्छा नहीं है, खोज करें अर्थात। एएसपीएक्स बनाम रेजर के बीच अंतर के बारे में बात करता है)

यदि आप संपूर्ण प्रकार ऑब्जेक्ट्स ( typeof (someData) <) की तुलना करते हैं तो आपको पूर्ण प्रकार देखने में सक्षम होना चाहिए < / कोड> बनाम। कैश [कैशइंड]। गेट टाईप () - गुणों में से एक अलग होगा, अर्थात संभावित उम्मीदवार।

मैं उम्मीद करता हूं कि प्रकार समान दिखेंगे निम्नलिखित (इसके असेंबली के नाम में अंतर के साथ):

  • { ASP._dev_pull_aspx.someData से "ASP._dev_pull_aspx। _3333 । Dll "
  • {ASP._dev_pull_aspx.someData से" ASP._dev_pull_aspx। _7777 .dll "

    ठीक करने के लिए आपको उन पन्नों को स्थानांतरित करना चाहिए जिनके बारे में आपको ध्यान से पृष्ठ से संकलित विधानसभाएं मिलीं या इस तथ्य से बनी रहें कि कभी-कभी प्रकार के एप-डोमेन से मेल नहीं खाते और पुनरारंभ हो जाएंगे। सामान्यत: पुनर्निर्माण परियोजना या वेब। कॉन्फ़िगर बदलने से एप-डोमेन रीसायकल ट्रिगर होता है क्योंकि यह रीसायकल को अलग-अलग पन्नों के पुन: संयोजनों की संख्या के साथ ट्रिगर किया जाता है।

    नोट:

    • बदलते हुए st कुछ डेटा से वर्ग के कुछ डेटा अभी भी त्रुटि को पुन: उत्पन्न कर देगा, लेकिन आप इसके बजाय प्रकार के अतिरिक्त विस्तृत संदेश देख सकते हैं, जैसे कि अभी भी अलग होगा
    • ऐसे अन्य सामान्य मामलों कोड साझाकरण के कारण कई विधानसभाओं / नामस्थानों में समान प्रकार की प्रतिलिपि हो रही है (जैसा कि एक ही स्रोत फ़ाइल को कई परियोजनाओं में शामिल किया गया है) और एक ही जोरदार नामांकित विधानसभा के एकाधिक संस्करणों का उपयोग कर रहा है।

Comments

Popular posts from this blog

python - Overriding the save method in Django ModelForm -

html - CSS autoheight, but fit content to height of div -

qt - How to prevent QAudioInput from automatically boosting the master volume to 100%? -