मैं एक AJAX- सक्षम जावास्क्रिप्ट फ्रंटएंड पर काम कर रहा हूं जो स्ट्रूट्स के साथ लिखे गए जावा बैकएंड पर कॉल करता है। मेरी समस्या यह है कि जब बैकएंड अपवाद फेंकता है, तो क्लाइंट अभी भी "500 आंतरिक सर्वर त्रुटि" की बजाय "200 ओके" HTTP प्रतिक्रिया कोड देखता है जैसा कि कोई उम्मीद करेगा।स्ट्रेट्स बनाना 500 आंतरिक सर्वर त्रुटि भेजता है जब अपवाद फेंकते हैं
यह मुझे बार-बार ट्रिप कर रहा है क्योंकि मेरी तृतीय-पक्ष क्लाइंट जावास्क्रिप्ट लाइब्रेरी HTTP स्थिति कोड पर निर्भर करती है कि यह निर्धारित करने के लिए कि AJAX कॉल में कुछ गड़बड़ है या नहीं, क्योंकि अधिकांश आधुनिक पुस्तकालय सामान्य रूप से करते हैं। त्रुटि तब तक ज्ञात नहीं होती जब तक कि मेरा कोड तब तक उड़ा न जाए जब यह सामान्य रूप से जेएसओएन का विश्लेषण करने की कोशिश करता है।
मैं वास्तव में इन त्रुटियों को गहन तरीके से संभालने के लिए अपने क्लाइंट जेएस लाइब्रेरी हैकिंग से बचना चाहता हूं। तो फिर, बैकएंड में एक अनचाहे अपवाद होने पर स्ट्रैट्स मुझे 500 स्टेटस कोड कैसे दे सकता है? क्या यह स्ट्रूट का डिफ़ॉल्ट व्यवहार नहीं होना चाहिए?
संपादित करें: क्लाइंट-साइड कोड इस मामले में अप्रासंगिक है। मुझे सर्वर को ठीक करने की आवश्यकता है, इसलिए जब अनचाहे अपवाद होते हैं तो यह उचित स्थिति कोड भेजता है। धन्यवाद!
क्लाइंट-साइड लाइब्रेरी ExtJS है, लेकिन है कि कोई फर्क नहीं पड़ता। सर्वर क्या समस्या है। स्ट्रैट्स एक HTML त्रुटि रिपोर्ट और "200 ओके" स्थिति कोड भेजता है जब सर्वर पक्ष पर एक अनचाहे अपवाद होता है, और यही वह है जिसे मैं ठीक करने का प्रयास कर रहा हूं। एचटीएमएल मैं संभाल सकता हूं, लेकिन त्रुटियों के होने पर स्ट्रूट को 500 कोड भेजने में सक्षम होना चाहिए, कोड 200 नहीं। धन्यवाद! – curtisdf
'WebApplicationException()' एक HTTP 500 त्रुटि कोड का कारण बनता है। क्या आपने इसे फेंकने की कोशिश की? – tusar
सर्वर साइड पर मैं हर जगह ट्राई/कैच ब्लॉक सम्मिलित करने के लिए होने से बचने के लिए चाहते हैं। मुझे स्ट्रैट्स को कुछ प्रकार की कॉन्फ़िगरेशन की आवश्यकता है, "राइट थिंग (टीएम) करें और जब भी आप इन मूर्ख समस्या रिपोर्ट भेजते हैं तो मुझे 500 प्रतिक्रिया कोड दें।" – curtisdf