मेरे पास एक एएसपी.Net एकल-फ़ाइल वेब सेवा है (.ashx
फ़ाइल जिसमें IHttpHandler
कार्यान्वयन है) जिसे 500 आंतरिक सर्वर त्रुटि स्थिति कोड के साथ प्रतिक्रियाओं के रूप में त्रुटियों को वापस करने में सक्षम होना आवश्यक है।ASP.Net में स्टेटस कोड 500 कैसे भेजें और फिर भी प्रतिक्रिया को लिखें?
header("HTTP/1.1 500 Internal Server Error");
header("Content-Type: text/plain");
echo "Unable to connect to database on $dbHost";
ASP.Net (सी #) बराबर होना चाहिए:: यह PHP में करने के लिए एक अपेक्षाकृत सीधा बात है
Context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
Context.Response.ContentType = "text/plain";
Context.Response.Write("Unable to connect to database on " + dbHost);
बेशक
, इस अपेक्षा के अनुरूप काम नहीं करता है; इसके बजाए, आईआईएस 500 स्थिति कोड को रोकता है, जो भी मैंने Response
ऑब्जेक्ट पर लिखा है उसे ट्रैश करता है, और एप कॉन्फ़िगर किया गया है, इस पर निर्भर करता है कि यह डीबग जानकारी या कस्टम त्रुटि पृष्ठ भेजता है।
मेरा प्रश्न - मैं इस आईआईएस व्यवहार को कैसे दबा सकता हूं और सीधे अपने IHttpHandler
कार्यान्वयन से त्रुटि जानकारी भेज सकता हूं?
यह ऐप PHP से पोर्ट है; क्लाइंट-साइड पहले से ही लिखा गया है, इसलिए मैं अनिवार्य रूप से इस spec के साथ अटक गया हूँ। 200 स्थिति कोड के साथ त्रुटियों को भेजना दुख की बात नहीं है।
आदर्श रूप में, मैं, प्रोग्राम के रूप में व्यवहार को नियंत्रित करने की जरूरत है क्योंकि यह एक SDK हम बिना किसी भी "संपादित इस फ़ाइल" वितरित करना चाहते हैं का हिस्सा है और अनुपूरक निर्देश "इस की स्थापना IIS बदलने "।
धन्यवाद!
संपादित करें: सॉर्ट किया गया। टिकट था। वाह।
मैं इस तरह के एक उत्पादन साइट पर डेटाबेस स्थान के रूप में आंतरिक जानकारी देने से बचने चाहते हैं यदि संभव हो तो - हैकर्स इस सामग्री हो रही प्यार, उनके हमलों को बहुत आसान बना देता है। – devstuff
अच्छा बिंदु, लेकिन यह एक सुरक्षित वेब सेवा है, न कि वेबसाइट। डाटाबेस कनेक्शन पहले सफल HTTP प्रमाणीकरण के बिना भी प्रयास नहीं किया जाता है :) –