2009-04-29 16 views
7

मैंने स्थानीयहोस्ट कैसिनी पर एक वेबसाइट परीक्षण विकसित किया है और यह हमेशा ठीक चल रहा है, अब जब मैं अपने वेबसर्वर पर तैनात करता हूं तो मैं अंतःस्थापित करता हूं निम्न त्रुटि प्राप्त करें:System.Web.Configuration.MachineKeySection.MetineKeySection.GetDecodedData इंगित करता है

Global.Application_Error Error: Exception occurred during request: http://....blah.aspx Unable to validate data. at System.Web.Configuration.MachineKeySection.GetDecodedData(Byte[] buf, Byte[] modifier, Int32 start, Int32 length, Int32& dataLength) at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) HttpApplication.RaiseOnError => EventHandler.Invoke => Global.Application_Error

यह मेरे वैश्विक.एक्सएक्स में पकड़ा जा रहा है। मैंने चारों ओर खोज की है लेकिन कारण नहीं मिल रहा है। यह अपवाद बेहद सरल और छोटे वेबफॉर्म में फेंक दिया जा रहा है। साइट को वेबफर्म के भीतर होस्ट नहीं किया गया है।

2 पृष्ठ इस त्रुटि को अंतःस्थापित करते हैं और उनमें से एक ViewState में एक बूल संग्रहीत करता है, लेकिन इसे इसके अलावा संशोधित नहीं किया जाता है।

क्या कोई इससे पहले इस पर आ गया है?

उत्तर

11

http://dotnetcoderoom.wordpress.com/2008/11/07/unable-to-validate-data-aspnet-error/

कारण: इस का मूल कारण यह कुंजी का अंतर है, जबकि एन्क्रिप्ट करने और viewstate डेटा decrypting है। मान लीजिए कि एएसपीनेट ने कुंजी 1 के साथ एक पेज प्रस्तुत किया है और पृष्ठ स्थिति को दृश्य स्थिति में सहेजा है, इस बीच एएसपीनेट की कुंजी को कुंजी 2 में बदल दिया गया है, अब जब कुछ सर्वर साइड इवेंट पृष्ठ पर होगा, तो व्यूस्टेट डिक्रिप्ट हो जाएगा और यह त्रुटि इस प्रकार होगी पुरानी दृश्य स्थिति अब एक अलग एन्क्रिप्शन कुंजी के कारण मान्य नहीं है।

यह तब हो सकता है जब आप समय के साथ एक पृष्ठ खोलें और उसके बाद कुछ घटनाएं करें।

समाधान अपनी वेब.कॉन्फिग फ़ाइल में कुंजी को ठीक करें, ताकि केवल एक कुंजी को व्यूस्टेट डेटा को एन्क्रिप्ट और डिक्रिप्ट करने के लिए उपयोग किया जा सके।

अधिक जानकारी के लिए:

http://www.experts-exchange.com/Programming/Programming_Languages/Dot_Net/ASP_DOT_NET/Q_21321364.html

http://support.microsoft.com/default.aspx?scid=kb;en-us;Q312906

+0

+1 अच्छा उत्तर - यहां तकनीकी पृष्ठ पर कोड का सार्वजनिक कार्यान्वयन है: http://www.developmentnow.com/articles/machinekey_generator.aspx –

+0

मैंने अपने वेब में एक मशीन को जोड़ा है।कॉन्फ़िगरेशन, और अभी तक कोई त्रुटि नहीं है, इसलिए उम्मीद है कि यह समाधान –

+0

सही समाधान के रूप में चिह्नित करने के लिए स्वतंत्र महसूस करें;) – StevenMcD

3

कि अगर त्रुटि को ठीक

http://aspnetresources.com/tools/keycreator.aspx

+1

मैंने अपने web.config में एक मशीन को जोड़ा है, और अभी तक कोई त्रुटि नहीं है, इसलिए उम्मीद है कि यह समाधान –

8

मैं देखने के लिए अपने web.config के लिए एक मशीन कुंजी जोड़ने का प्रयास करें "डेटा System.Web.Configuration.MachineKeySection.Enc को सत्यापित करने में असमर्थ हो रहा था ryptOrDecryptData "मेरे asp.net वेब ऐप में। मैंने अपनी कुकीज़ साफ़ कर दी, और अपवाद बंद कर दिया।

+0

है, आप निश्चित रूप से कुछ पर हैं। मेरे लिए, क्या हुआ था कि मैंने एक आईआईएस वेबसाइट पथ को एक अलग साइट पर बदल दिया जो एक ही एएसपी.नेट फॉर्म समाधान और उसी डोमेन-आधारित कुकीज़ का उपयोग करता है लेकिन web.config में एक अलग मशीन कुंजी संयोजन का उपयोग करता है। तो ऐसा लगा कि कुकी नई साइट के लिए थी, लेकिन यह नहीं था। पिछली साइट द्वारा एन्क्रिप्ट किए गए डेटा को डिक्रिप्ट करते समय यह दबाया जाता है। Booya! पारितोषिक के लिए धन्यवाद। –

0

एक ही त्रुटि थी। machinekey और decryptionKey सभी web.config में ही था, लेकिन कुछ web.config

<add key="aspnet:UseLegacyEncryption" value="true" /> 
    <add key="aspnet:UseLegacyFormsAuthenticationTicketCompatibility" value="true" /> 

था और दूसरा नहीं लेता था। इस वेब को सभी web.config से हटा दिया गया। मुझे नहीं लगता कि समाधान कुंजी को हटाने में है लेकिन सभी web.config

0

मेरे मामले में मेरे पास दो वेब एप्लिकेशन थे (एक बहुत पुराना था और दूसरा मैंने अभी बनाया) और होने के बावजूद एक ही मशीन में उत्पन्न एक ही मशीन कुंजी सेटिंग्स टिकट दूसरे में प्रयोग योग्य नहीं थे। compatibilityMode="Framework20SP2" को machineKey नोड web.config में नए एप्लिकेशन में एक तर्क के रूप में जोड़कर तय किया गया था।

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