.net - एएसपी.नेट-बड़ा फाइल अपलोड करते समय एक त्रुटि पृष्ठ कैसे दिखाना है(अधिकतम अनुरोध लंबाई पार हो गई है)?




asp.net file-upload (4)

आप पोस्टफ़ाइल (FileUpload.PostedFile.ContentLength) की लंबाई की जांच कर सकते हैं, यह देखने के लिए कि क्या सीमा से नीचे है या नहीं और यदि आवश्यक हो तो केवल एक मित्र त्रुटि संदेश दिखा रहा है

एप्लिकेशन को त्रुटि पर रिकॉर्ड करने में सक्षम है, लेकिन हम उपयोगकर्ता को कुछ सार्थक दिखाने के लिए किसी भी रीडायरेक्ट या ऐसा करने में सक्षम नहीं हैं। कोई विचार? मुझे पता है कि हम web.config में maxRequestLength सेट कर सकते हैं, लेकिन वैसे भी उपयोगकर्ता इस सीमा से अधिक हो सकते हैं और कुछ सामान्य त्रुटि को प्रदर्शित करने की आवश्यकता है।


जैसा कि आप कहते हैं कि आप अपने वेब। कॉन्फ़िग (अपने machine.config के डिफ़ॉल्ट 4MB को ओवरराइड करते हुए) में maxRequestLength सेटअप कर सकते हैं और यदि यह सीमा पार हो गई है, तो आपको आमतौर पर एक HTTP 401.1 त्रुटि मिलती है।

अनुप्रयोग स्तर पर एक सामान्य HTTP त्रुटि को संभालने के लिए आप अपने web.config में system.web अनुभाग में CustomError अनुभाग सेटअप कर सकते हैं:

<system.web>
   <customErrors mode=On defaultRedirect=yourCustomErrorPage.aspx />
</system.web>

हर बार त्रुटि दिखाती है कि उपयोगकर्ता को आपके कस्टम त्रुटि पृष्ठ पर रीडायरेक्ट किया जाएगा।

यदि आप प्रत्येक त्रुटि के लिए एक विशेष पृष्ठ चाहते हैं तो आप ऐसा कुछ कर सकते हैं:

<system.web>    
   <customErrors mode="On" defaultRedirect="yourCustomErrorPage.aspx">
     <error statusCode="404" redirect="PageNotFound.aspx" />
   </customErrors>
</system.web>

और इसी तरह।

वैकल्पिक रूप से आप IIS से वर्चुअल निर्देशिका प्रॉपर्टी के CustomErrors टैब को पसंद कर सकते हैं, जिससे आप अपनी पसंद के पृष्ठों के त्रुटि को नियंत्रित कर सकते हैं।

उपर्युक्त 401.x त्रुटियों के लिए काम नहीं किया जा रहा है - यह कोड-प्रोजेक्ट लेख एक समान समान समस्या के लिए एक वैकल्पिक हल बताता है: कस्टम 401 पृष्ठ पर पुनर्निर्देशित करना


आप Global.asax - OnError () हैंडलर में त्रुटि को पकड़ने में सक्षम होना चाहिए। लेकिन दुर्भाग्य से, आपका आरंभिक अनुरोध समाप्त हो जाएगा और आप उपयोगकर्ता को कुछ त्रुटि सूचना के साथ एक ही अपलोड पृष्ठ को प्रस्तुत करने में सक्षम नहीं होंगे।

आप सबसे अधिक क्या कर सकते हैं, एक आसान त्रुटि पृष्ठ को ओनर () हैंडलर के भीतर से सरल रीडायरेक्ट खंड के साथ प्रदर्शित करने के लिए और उस पृष्ठ पर कुछ पिछली लिंक या इसी तरह की कार्यक्षमता को उपयोगकर्ता को पृष्ठ पर लौटा देना है जहां उसने पहली बार त्रुटि को ट्रिगर किया था जगह।

अद्यतन करें:

मुझे हाल ही में फ़ाइल अपलोड पर सटीक जांच करना था और मैं जो SWFUpload लाइब्रेरी के साथ आया हूं जो पूरी तरह से मेरी आवश्यकताओं को पूरा करता था और इसमें बहुत अधिक अतिरिक्त सुविधाएं भी होती हैं मैं इसे स्टीव सैंडरसन द्वारा प्रदान की गई jquery आवरण के साथ प्रयोग किया। अधिक जानकारी यहां पाई जा सकती है

मुद्दा यह है, कि फ्लैश क्लाइंट साइड पर फ़ाइल आकार का पता लगाने में सक्षम है और ठीक से प्रतिक्रिया करता है अगर यह मामला पूरा हो गया है। और मुझे लगता है कि यह वही है जो आपको चाहिए।

इसके अलावा, आप फ्लैश डिस्क्रिप्शन की जांच को लागू कर सकते हैं यदि आप क्लासिक में फ्लैश इंस्टॉल नहीं करते हैं, तो आप मूल रूप से अपलोड करें बटन के लिए बेहद निराश होना चाहते हैं।


सर्गेई,

प्रति JohnIdol का जवाब, आपको 413 स्थितिकोड के लिए एक कस्टम त्रुटि पृष्ठ सेट करने की आवश्यकता है उदाहरण के लिए:

    <customErrors mode="On" defaultRedirect="~/Errors/Error.aspx">
                    <error statusCode="413" redirect="~/Errors/UploadError.aspx"/>
    </customErrors>

मुझे पता है क्योंकि मुझे एक क्लाइंट प्रोजेक्ट पर एक ही समस्या का समाधान करना था, और यह मेरे लिए काम करने वाला समाधान था। दुर्भाग्यवश यह एकमात्र उपाय था जो मैंने पाया ... कोड में इस विशेष समस्या को पकड़ना संभव नहीं था; उदाहरण के लिए, पोस्ट की गई फाइल की लंबाई की जांच के रूप में snomag ने सुझाव दिया है, या global.asax में एक त्रुटि को पकड़ने के लिए। आपके जैसा, मैंने भी काम करने के समाधान के साथ आने से पहले इन अन्य तरीकों की कोशिश की थी। (जब मैं अपनी समस्या पर काम कर रहा था तब वास्तव में मैं अंततः इस वेब पर कहीं मिल गया)

उम्मीद है की वो मदद करदे।





application-onerror