2011-05-02 12 views
7

तो मुझे अपवादअमान्य पोस्टबैक या कॉलबैक तर्क। क्यूं कर?

अमान्य पोस्टबैक या कॉलबैक तर्क प्राप्त हुआ। घटना सत्यापन एक पेज में उपयोग कर विन्यास में या <% @ पृष्ठ EnableEventValidation = "true"%> सक्षम है। सुरक्षा कारणों से, यह सुविधा पुष्टि करता है कि पोस्टबैक या कॉलबैक घटनाओं के लिए तर्क सर्वर नियंत्रण है कि मूल रूप से उन्हें प्रदान की गई से आरंभ। यदि डेटा मान्य और अपेक्षित है, क्लाइंटस्क्रिप्ट मैनेजर का उपयोग करें। सत्यापन के लिए पोस्टबैक या कॉलबैक डेटा पंजीकृत करने के लिए विधि का उपयोग करें। Untrapped अपवाद:: अमान्य पोस्टबैक या कॉलबैक तर्क

साथ स्टैक ट्रेस निम्नलिखित

[System.ArgumentException

। इवेंट सत्यापन कॉन्फ़िगरेशन या <% @ सक्षम EventValidation = "true"%> पृष्ठ में सक्षम है। सुरक्षा उद्देश्यों के लिए, यह सुविधा सत्यापित करती है कि पोस्टबैक या कॉलबैक ईवेंट के तर्क सर्वर नियंत्रण से मूल रूप से उन्हें प्रस्तुत करते हैं। डेटा वैध है और उम्मीद है, System.Web.UI.ClientScriptManager.ValidateEvent (स्ट्रिंग uniqueId, स्ट्रिंग तर्क पर सत्यापन के लिए पोस्टबैक या कॉलबैक डेटा रजिस्टर करने के लिए आदेश में ClientScriptManager.RegisterForEventValidation विधि का उपयोग करें।]) System.Web.UI.Control.ValidateEvent (स्ट्रिंग System.Web.UI.WebControls.LinkButton.RaisePostBackEvent पर uniqueID, स्ट्रिंग eventArgument) (स्ट्रिंग eventArgument) System.Web.UI.WebControls.LinkButton पर पर। System.Web.UI.IPostBackEventHandler.RaisePostBackEvent System.Web.UI.Page.Rais पर (स्ट्रिंग eventArgument) ePostBackEvent (IPostBackEventHandler sourceControl, स्ट्रिंग eventArgument)
System.Web.UI.Page.ProcessRequestMain (बूलियन includeStagesBeforeAsyncPoint, बूलियन includeStagesAfterAsyncPoint)

पर System.Web.UI.Page.RaisePostBackEvent (NameValueCollection POSTDATA) पर फ़ॉर्म सबमिट, और फिर जल्दी से पहले पेज फिर से पुन: लोड एक ही पृष्ठ पर एक फाइल डाउनलोड करने के लिए एक LinkButton पर क्लिक करने के बाद

अपवाद तब होता है।

कोई क्यों इस अपवाद कार्यों ऊपर वर्णित को क्रियान्वित करने पर हो रहा है के विवरण की व्याख्या कर सकते हैं?

अग्रिम धन्यवाद!

+0

जब मैंने .NET Framework 4.5 स्थापित किया था तो मुझे उत्पादन सर्वर पर एक ही अपवाद मिला था। इसके कारण मुझे .NET 4.0 को पुनर्स्थापित करना पड़ा। बीटीडब्ल्यू, .NET 4.5 .NET 4.0 का सिर्फ अपडेट (या सर्विस पैक) है, वे साइड-बाय-साइड नहीं रह सकते हैं। क्या एक मूर्ख सामग्री ... –

उत्तर

15

यह .NET में सबसे निराशाजनक त्रुटि संदेशों में से एक होना है, लेकिन एक बार जब आप महसूस कर रहे हैं कि क्या हो रहा है, तो यह समझ में आता है। .NET को यह सब कुछ पता होना पसंद है जो चल रहा है। यह पृष्ठ पर रखे गए सभी तत्वों का ट्रैक रखता है। उन समान रेखाओं के साथ, .NET को नाराज हो जाता है जब इसे उस चीज़ से इनपुट प्राप्त होता है जिसे वह नहीं जानता था। आपके मामले में, ऐसा लगता है कि जब आप लिंकबटन पर क्लिक करेंगे, .NET ऐसा नहीं लगता कि यह वहां होना चाहिए।

  1. आप क्लाइंट साइड wizardry कि नए आदानों बनाने या मौजूदा आदानों क्लोनिंग है करने के लिए कर रहे हैं: मेरे अनुभव में, वहाँ इस के लिए दो संभावना कारण हैं।

  2. जबकि फॉर्म सबमिशन संसाधित किया जा रहा है, .NET लिंकबटन के लिए कुछ करता है जो अब उपलब्ध नहीं होता है। इसके कुछ उदाहरण मैंने चलाए हैं जब आपका लिंकबटन गतिशील रूप से बैकएंड में बनाया गया है या आप अपडेटपेनल का उपयोग कर रहे हैं और उनकी सामग्री फॉर्म के सबमिशन के दौरान बदल जाती है।

असल में, मेरा मानना ​​है कि यदि आप फ़ॉर्म प्रविष्टि कोड के माध्यम से कदम और घड़ी कि LinkButton, आप नेट इसके बारे में भूल जाते हैं, जो जाहिर है इस "सुरक्षा अपवाद" से चलाता है जब LinkButton क्लिक किया जाता है देखेंगे।

+0

मैं आपके सुझावों से सहमत हूं। मेरे मामले में क्या हो रहा है बिंदु # 2 के साथ करना है। हालांकि, मैं यह पहचानने में असमर्थ हूं कि यह कैसे विफल रहता है। नियंत्रण उसी पृष्ठ में प्रस्तुत किया जाना चाहिए जैसा उन्होंने मूल पृष्ठ लोड (प्री-पोस्टबैक) पर किया था। मेरा लिंकबटन एक डेटलिस्ट के अंदर है। मैंने अपने डाटलिस्ट को बाध्य करने से पहले! पोस्टपोस्टबैक क्लॉज का उपयोग करने की कोशिश की है लेकिन यह अभी भी विफल हो गई है। –

+4

"मेरा लिंकबटन एक डातालिस्ट के अंदर है" मुख्य बयान है। क्या पोस्टबैक पर डाइटलिस्ट को रिबाउंड किया जा रहा है? यदि ऐसा है, तो मूल लिंकबटन मिटा दिया गया है और नया लिंकबटन बनाया गया है। यह कार्यात्मक और सौंदर्यपूर्ण रूप से समान है, लेकिन .NET अंतर को जानता है और इस त्रुटि को उठाता है। – chprpipr

1

यदि वे किसी पृष्ठ से पहले क्लिक कर रहे हैं तो पूरी तरह से प्रस्तुत करने का मौका है तो __EVENTVALIDATION फ़ील्ड पूरी तरह से लिखे नहीं जा रहे हैं - इस प्रकार आपकी त्रुटि।

अब यह 3.5 एसपी 1/3.0 एसपी 2 में तय किया गया था, और configurable वेब.कॉन्फिग में है;

<configuration> 
    <system.web> 
     <pages renderAllHiddenFieldsAtTopOfForm="true"></pages> 
    </system.web> 
</configuration> 

डिफ़ॉल्ट सत्य है - तो आप .NET का कौन सा संस्करण चल रहे हैं? पृष्ठ लोड होने तक आप हमेशा क्लाइंट पक्ष को अक्षम कर सकते हैं।

0

इस पृष्ठ का उपयोग टैग EnableEventValidation = "false"

+3

EnableEventValidation = "false" का उपयोग करना बुरा है क्योंकि इससे सुरक्षा कम हो जाती है। –

+0

मैं सहमत हूं कि इससे सुरक्षा कम हो जाती है लेकिन मुझे उस सुझाव का हल मिल जाता है जो इस मुद्दे को हल कर सकता है .... @Dirk Strauss –

0

में page.asx में मैंने पाया कि HTML रूपों WebForms में इस समस्या पैदा कर सकता है अगर आप उन सब को एक टेम्पलेट से नहीं निकालते हैं

0

यह त्रुटि मेरे लिए एक बहुत बड़े पृष्ठ पर, मेरे लिए अंतःक्रियात्मक रूप से दिखाई दे रही थी।

मुझे पता चला कि से पहले एक बटन क्लिक किया गया था, पृष्ठ लोड हो गया था, यह यह त्रुटि देगा।

बटन पर क्लिक करने से पहले पृष्ठ को पूरी तरह से लोड करने की प्रतीक्षा कर रहा है, मुझे त्रुटि नहीं मिली।