2016-07-28 14 views
5

के लिए कस्टम त्रुटि पृष्ठ मैं आम तौर पर एएसपी.नेट और एमवीसी के लिए बिल्कुल नया हूं; मैं एएसपी.नेट एमवीसी कोर को एएसपी.नेट एमवीसी कोर में माइग्रेट कर रहा हूं। पूर्व ढांचे में मैं निम्नलिखित कुख्यात त्रुटि के लिए एक HttpException संभाल करने में सक्षम था:एचटीपी त्रुटि 404.13 एएसपी.नेट कोर एमवीसी

HTTP Error 404.13 - Not Found

The request filtering module is configured to deny a request that exceeds the request content length.

मुझे पता है मैं अधिकतम अपलोड स्वीकृत सीमा, जो वर्तमान में डिफ़ॉल्ट रूप से 30MB है बढ़ा सकते हैं, लेकिन मेरा उद्देश्य पेश करने के लिए है एक दोस्ताना त्रुटि पृष्ठ वाला उपयोगकर्ता जो समझाता है, वह अनुमति सीमा को बढ़ाता नहीं है।

ASP.NET पर मैं अपने Global.asax पर निम्न कोड के साथ ऐसा किया:

private void Application_Error(object sender, EventArgs e) 
{ 
    var ex = Server.GetLastError(); 
    var httpException = ex as HttpException ?? ex.InnerException as HttpException; 
    if (httpException == null) return; 

    if (httpException.WebEventCode == WebEventCodes.RuntimeErrorPostTooLarge) 
    { 
     //handle the error 
     Response.Redirect("~/Error/UploadTooLarge"); //Redirect to my custom error page 

    } 
} 

मैं अनुसंधान के कई घंटे के बाद Asp.Net कोर में इस के लिए एक विकल्प के खोजने के लिए प्रतीत नहीं कर सकते हैं। मुझे विश्वास है कि मुझे अपने Startup.cs में कुछ मिडलवेयर प्लग करने की आवश्यकता होगी HttpException को संभालने और इसे पुनर्निर्देशित करने के लिए कस्टम त्रुटि पृष्ठ प्राप्त करने के लिए विधि कॉन्फ़िगर करें, लेकिन मैं इस मामले पर वास्तव में खो गया हूं।

मैं ऐसे 404 के रूप में सफलतापूर्वक http त्रुटियों के लिए कस्टम त्रुटि पृष्ठों के लिए निम्नलिखित मिडलवेयर उपयोग करने के लिए कामयाब रहे - नहीं मिला या 403 - मेरी कॉन्फ़िगर पद्धति पर निम्नलिखित का उपयोग करके forbiden:

app.UseStatusCodePagesWithReExecute("/Error/StatusCode{0}"); 

एक नियंत्रक के साथ-साथ:

public class ErrorController : Controller 
{ 
    public IActionResult StatusCode404() 
    { 
     return View(viewName: "CustomNotFound"); 
    } 

    public IActionResult StatusCode403() 
    { 
     return View("CustomForbiden"); 
    } 
} 

और संबंधित विचार। हालांकि, 404.13 त्रुटि (बहुत बड़ी अपलोड) मेरे वर्तमान मिडलवेयर द्वारा संभाला नहीं जाएगा। मेरा मानना ​​है कि आईआईएस त्रुटि पेश कर रहा है क्योंकि इसे वेब ऐप द्वारा नियंत्रित नहीं किया जाता है।

उत्तर

0

आप सही हैं। आईआईएस आपकी पाइपलाइन में आने से पहले त्रुटि को दबा रहा है। मैं आपके web.config में httpErrors मॉड्यूल जोड़ने और साइट पर किसी पृष्ठ पर इंगित करने की अनुशंसा करता हूं।

<system.webServer> 
    <httpErrors errorMode="Custom" existingResponse="Replace"> 
    <remove statusCode="404" subStatusCode="13" /> 
    <error statusCode="404" 
      subStatusCode="13" 
      prefixLanguageFilePath="" 
      path="http://yourwebsite.com/path/to/page" 
      responseMode="Redirect" /> 
    </httpErrors> 
</system.webServer> 
+0

MVC कोर के लिए बढ़िया सिफारिश। मैंने अपना मिडलवेयर हटा दिया और 'httpErrors' मॉड्यूल जोड़ा और चूंकि प्रत्येक त्रुटि के लिए पथ गुण 'पथ = "/ त्रुटि/कस्टमएक्शन" जैसे मान को अनुमति देता है, मैं एक त्रुटि नियंत्रक के साथ अपने कस्टम त्रुटि पृष्ठों/दृश्यों को संभाल सकता हूं। –

+0

यह एक ऐसा मामला है जहां दृश्य स्टूडियो के साथ लाइव/दूरस्थ रूप से कनेक्ट करने में सक्षम होना बहुत अच्छा होगा .. अन्यथा, यह एक हिट या मिस है और लगातार एक प्रकाशन/परीक्षण दोहराना पड़ता है और सबसे अच्छा उम्मीद है कि वास्तविक दर्द बिंदु है। – razblack

+0

हालांकि मैं उत्सुक हूं, अगर आप क्लाइंट को संदेश को संभालना चाहते हैं तो एक उग्र प्रणाली कहें और आपके पास यह रीडायरेक्ट हो रहा है। – razblack

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