2012-02-22 11 views
9

द्वारा ठीक से कब्जा नहीं किया गया है ठीक है मुझे उत्पादन वातावरण में समस्या है और कैसे jquery AJAX त्रुटि को कैप्चर करता है।सी # अपवाद jquery AJAX

मेरी स्थानीय मशीन पर मेरे विकास पर्यावरण में जब jquery AJAX एक webservice [webmethod] कहता है और वेबमाइथ एक विशिष्ट त्रुटि फेंकता है, jquery AJAX सही ढंग से कैप्चर करता है लेकिन उत्पादन वातावरण में jquery AJAX त्रुटि को कैप्चर करता है लेकिन संदेश है जेनेरिक "अनुरोध को संसाधित करने में त्रुटि हुई।" के साथ "आंतरिक सर्वर त्रुटि"

उदाहरण के लिए

सी # कोड

[WebMethod] 
public String dostuff(String Auth){ 
// some code here 
// if error occurs 
throw new Exception("Some specific error message"); 
return "ok"; 
} 

jQuery ajax कॉल

var data = JSON.stringify({ Auth: "some data here" }, null); 

    $.ajax({ 
     type: "POST", 
     url: '/Services/memberService.asmx/dostuff', 
     data: data, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (result) { 
      alert(result.d); // alert ok 
     }, 
     error: function (XMLHttpRequest, textStatus, errorThrown) { 
      alert("responseText=" + XMLHttpRequest.responseText + "\n textStatus=" + textStatus + "\n errorThrown=" + errorThrown); 
     } 
    }); 

अपने स्थानीय मशीन पर XMLHttpRequest.responseTextहै " कुछ विशिष्ट त्रुटि संदेश "

उत्पादन वातावरण पर XMLHttpRequest.responseTextहै "अनुरोध को संसाधित करने में त्रुटि हुई।"

स्थानीय पर्यावरण आईआईएस 7.5.7600.16385 (विकास के वातावरण के रूप में ही)

क्यों अंतर और कैसे के साथ आर 2 आईआईएस 7.5.7600.16385

उत्पादन वातावरण विंडोज सर्वर 2008 है साथ विंडोज 7 होम प्रीमियम है उत्पादन वातावरण को विशिष्ट त्रुटि फेंकने के लिए?

** * ** * ** * सिर्फ एक .. tnx जस्टिन अनुवर्ती * ** * ** * ** * ** *

मैंने वेब के अंदर web.config फ़ाइल जोड़ा rvices फ़ोल्डर (DOH ... क्यों मैं इस बारे में नहीं सोचा था)

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.web> 
     <customErrors mode="Off" /> 
    </system.web> 
</configuration> 
+3

चेक web.config का '' अनुभाग। आमतौर पर एक अंतिम उपयोगकर्ता को अपवाद विवरण का खुलासा नहीं करना चाहता है। –

+0

सही ... लेकिन क्या यह केवल वेब सेवाओं के लिए सक्षम करने का कोई तरीका है? वर्तमान में यह केवल – robert

+0

है, यह वही प्रश्न है जो मैंने बहुत समय पहले पोस्ट किया था http://stackoverflow.com/questions/8059780/best-practices-throwing-exceptions-from-a-web- सेवा – Icarus

उत्तर

14

डिफ़ॉल्ट रूप से, नेट अनुप्रयोग कॉन्फ़िगर किया गया है केवल स्थानीय सर्वर के लिए विशिष्ट अपवाद जानकारी दिखाने के लिए।

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

आप, हालांकि, आप बदल सकते हैं चाहिए:

<customErrors mode="RemoteOnly" /> 

करने के लिए:

<customErrors mode="Off" /> 

और अगर आप सेवा फ़ोल्डर के लिए त्रुटियों को दिखाना चाहते हैं:

<location Path="/Services"> 
    <system.web> 
     <customErrors mode="Off" /> 
    </system.web> 
</location> 
+0

तो यह केवल वेब सेवाओं के लिए उपलब्ध कराने का कोई तरीका नहीं है? वे सभी "सेवा" नामक फ़ोल्डर में हैं – robert

+0

@robert - मेरा उत्तर अपडेट किया गया। बस पूरे ब्लॉक को तत्व में जोड़ें। –

+0

awsome ty .. मैं इसे आज़मा दूंगा ... btw आप गायब हैं> टैग :) – robert