हमारे पास एक सी # AJAX सर्वर है जो डेटाबेस अनुरोधों को संभालता है हम एक अपवाद पर 400/403/500 स्थिति कोड वापस करना चाहते हैं ताकि हम समझ सकें कि क्लाइंट पक्ष में क्या हुआ। हालाँकि, हमें केवल प्रतिक्रिया निकाय में "खराब अनुरोध" मिलता है।

उदाहरण के लिए, यदि ADO.Net ड्राइवर यह संदेश देता है:

अमान्य लंबाई पैरामीटर LEFT या SUBSTRING फ़ंक्शन को पास किया गया। मान NULL को कॉलम '--COLUMN--', टेबल '--DATABASE.SCHEMA.TABLE--' में सम्मिलित नहीं कर सकता; कॉलम नल की अनुमति नहीं देता है। INSERT विफल रहता है। बयान समाप्त कर दिया गया है।

तब हमारा AJAX सर्वर बस इस पाठ को लौटाता है:

खराब अनुरोध

मैंने क्रोम में पूर्ण प्रतिक्रिया शीर्षलेखों को देखा है और वहां इस त्रुटि संदेश के समान दूरस्थ रूप से कुछ भी नहीं है। यह वह कोड है जिसका उपयोग हम त्रुटि को वापस भेजने के लिए कर रहे हैं:

catch (Exception ex)
{
    //Response.TrySkipIisCustomErrors = true;
    Response.StatusCode = (int)HttpStatusCode.SC_BAD_REQUEST;
    Response.Write(ex.Message);
    Response.Flush();
}

इस सर्वर के समतुल्य जावा/जेएसपी में हमें इस कोड के साथ सही व्यवहार मिल रहा है:

} catch (Exception e) {

    response.sendError(response.SC_BAD_REQUEST, e.getClass() + " : " + e.getMessage());

}    
3
Graham 8 पद 2011, 19:58

2 जवाब

सबसे बढ़िया उत्तर

कुछ चीजें हैं जो गलत हो सकती हैं, लेकिन मैं शर्त लगाने के लिए तैयार हूं कि आप आईआईएस 7 पर चल रहे हैं और इसकी डिफ़ॉल्ट त्रुटि को फिर से लिखने का कारण बन रही है। TrySkipIisCustomErrors प्रॉपर्टी और existingResponse विशेषता पर httpErrors कॉन्फ़िगरेशन स्थापना।

2
Jon Hanna 8 पद 2011, 20:08
1
इसे web.config में जोड़ने से चाल चली - बहुत धन्यवाद! <system.webServer> <httpErrors errorMode="DetailedLocalOnly" defaultResponseMode="File" existingResponse="PassThrough"> </httpErrors> </system.webServer>
 – 
Graham
9 पद 2011, 18:41

सर्वर सुरक्षित विवरण को क्लाइंट तक पहुंचने से रोकने के लिए त्रुटि संदेश को खराब अनुरोध में समाहित कर रहा है। आप customErrors को बंद पर सेट करके इस व्यवहार को संशोधित कर सकते हैं, उदा।

<system.web>
    <customErrors mode="Off">
    </customErrors> 
</system.web>
0
George Johnston 8 पद 2011, 20:08
यह प्रभावित करता है जिसे चुना जाता है यदि एएसपी.नेट के बाहर कुछ स्पष्ट रूप से सेट किए जाने के बजाय त्रुटि उत्पन्न करता है, है ना?
 – 
Jon Hanna
8 पद 2011, 20:18
मैंने इसे अभी web.config में बदला है और इसका कोई प्रभाव नहीं पड़ा।
 – 
Graham
9 पद 2011, 18:30