2012-02-29 7 views
7

जब मैं एक गैर अधिकृत चरित्र (जैसे *) वाले पृष्ठ को कॉल करता हूं, तो मुझे एक पीला पृष्ठ मिलता है "एक संभावित खतरनाक अनुरोध। पैथ मान का पता चला"। ऐसा लगता है कि यह एक 400 त्रुटि पृष्ठ है। मेरा लक्ष्य इस पृष्ठ को कस्टमाइज़ करना और एक साफ़ त्रुटि पृष्ठ दिखाना या होम पेज पर रीडायरेक्ट करना है (मैंने दोनों समाधानों की कोशिश की है)।"संभावित रूप से खतरनाक अनुरोध। पैथ मान का पता लगाया गया" त्रुटि पृष्ठ

<system.webServer> 
<httpErrors errorMode="Custom"> 
    <remove statusCode="400" subStatusCode="-1" /> 
    <remove statusCode="404" subStatusCode="-1" /> 
     <error statusCode="400" path="/page-non-trouvee.aspx?status=400" responseMode="ExecuteURL" /> 
    <error statusCode="404" path="/" responseMode="ExecuteURL" /> 
</httpErrors> 

मैं IIS7 उपयोग कर रहा हूँ: यहाँ मैं अपने web.config में क्या लिखा है। बिंदु यह है कि मेरा 400 पृष्ठ अभी भी पीले त्रुटि पृष्ठ के रूप में दिखाया गया है। https://stackoverflow.com/users&nbsp

कोई भी विचार:

वहाँ एक समाधान है क्योंकि http://data.stackexchange.com/users&nbsp स्टैक ओवरफ़्लो के साथ ही इस समस्या नहीं है, हालांकि स्टैक एक्सचेंज डेटा एक्सप्लोरर है होना चाहिए?

<customErrors mode="On" redirectMode="ResponseRedirect" defaultRedirect="/404" /> 

हालांकि, इससे मूल पथ और खंड के साथ एक कष्टप्रद क्वेरी स्ट्रिंग में परिणाम होगा:

+0

आप देख रहे हैं इंगित करने के लिए आवेदन के विन्यास टैग की "defaultRedirect" विशेषता को संशोधित करके एक परिष्कृत त्रुटि पृष्ठ द्वारा बदला जा सकता है वर्तमान त्रुटि पेज एक कस्टम त्रुटि पेज यूआरएल के लिए। यह आपकी मदद नहीं करता है? – gbianchi

+0

यदि आप IIS7 + का उपयोग कर रहे हैं तो यहां एक आसान समाधान है: - http://stackoverflow.com/questions/30071341/asp-net-mvc-customerror-page-doesnt-get-displayed-for-some-of-the- 400 त्रुटियों/30,072,933 # 30,072,933 –

उत्तर

8

gbianchi उल्लेख किया है, आप एक customErrors इस तरह अनुप्रेषित कर सकता है।

यदि यह एक एएसपी.NET एप्लिकेशन है, तो आप अपने Global.asax.cs फ़ाइल में Application_Error ईवेंट को अधिभारित कर सकते हैं। यहाँ MVC में यह करने का एक हैक-ish तरीका है:

protected void Application_Error() { 
    var exception = Server.GetLastError(); 
    var httpException = exception as HttpException; 
    if (httpException == null) { 
     return; 
    } 

    var statusCode = httpException.GetHttpCode(); 
    // HACK to get around the Request.Path errors from invalid characters 
    if ((statusCode == 404) || ((statusCode == 400) && httpException.Message.Contains("Request.Path"))) { 
     Response.Clear(); 
     Server.ClearError(); 
     var routeData = new RouteData(); 
     routeData.Values["controller"] = "Error"; 
     routeData.Values["exception"] = exception; 
     Response.StatusCode = statusCode; 
     routeData.Values["action"] = "NotFound"; 

     // Avoid IIS7 getting in the middle 
     Response.TrySkipIisCustomErrors = true; 
     IController errorsController = new ErrorController(); 
     HttpContextWrapper wrapper = new HttpContextWrapper(Context); 
     var rc = new RequestContext(wrapper, routeData); 
     errorsController.Execute(rc); 
    } 
}