2010-10-22 21 views
14

के शरीर को हटा देता है मैंने एएसपी.नेट (4.0) कोड लिखा है जो सर्वर पर पोस्ट किया गया डेटा वैध है, तो Response.StatusCode 400 पर सेट करता है।
मैं उस प्रतिक्रिया में प्रतिक्रिया निकाय में उपयोगी जानकारी डालता हूं जिसमें अनुरोध हेडर स्वीकार करता है। उदाहरण के लिए एक HTML संदेश कह रहा है "दिनांक फ़ील्ड आवश्यक है ..."।आईआईएस 7.5 में कौन सा मॉड्यूल 400 खराब अनुरोध

विंडोज 7 पर आईआईएस 7 (7.5.7600) में मुझे ब्राउजर पर सही एचटीएमएल प्रतिक्रिया मिलती है।

विंडोज 2008 पर आईआईएस 7 (7.5.6000) में मुझे एचटीएमएल बॉडी वापस नहीं मिला है, लेकिन सामग्री के रूप में "खराब अनुरोध" के साथ केवल एक टेक्स्ट बॉडी है।

क्या कोई मुझे बता सकता है कि मैं 2008 सर्वर के कॉन्फ़िगरेशन को शरीर को वापस करने के लिए कैसे कॉन्फ़िगर करता हूं।
या आईआईएस के इन संस्करणों के बीच कोई अंतर है?
शायद मशीन.कॉन्फिग में एक मॉड्यूल?
उदाहरण के लिए मुझे पता है (और आसपास काम करना पड़ा है) कि फॉर्म प्रमाणीकरण मॉड्यूल एक 401 को 302 में बदल देता है भले ही आप इसे नहीं चाहते हैं। हो सकता है कि एक मॉड्यूल हो जो 400 भेजे जाने की सामग्री को रोकता हो।

टीआईए।

उत्तर

29

समाधान: web.config system.web सर्वर अनुभाग संपादित करें और httpErrors मौजूदा रेस्पॉन्स विशेषता "PassThrough" और voilá निश्चित पर सेट करें।
अर्थात्:

<system.webServer> 
    ... 
    <httpErrors existingResponse="PassThrough"></httpErrors> 
    ... 
</system.webServer> 

खैर 2 बातें हो गया मुझे इस मुद्दे के बारे में सोचना:
1. क्लासिक customErrors व्यवहार क्योंकि मैं एक दूरस्थ सर्वर
2. साथ स्थानीय होस्ट की तुलना की गई थी पहले की व्याख्या नहीं होगा कि किस तरह कुछ How to Use HTTP Detailed Errors in IIS 7.0

यह पूरी तरह से मैं क्या के लिए से संबंधित नहीं था: मेरे अन्य प्रमाणीकरण 'त्रुटियों' के माध्यम से बरकरार

मैं चारों ओर खोदा और IIS7 पर इस लेख में आए मिल रहे थे की und.config संपादित करते समय शायद IIS7.5 का उपयोग करने के कारण मुझे सही पड़ोस में लाने के लिए पर्याप्त था।

** यह भी ध्यान रखें कि आईआईएस 10 अब HTTP2 का समर्थन कर रहा है, जब डेटा 2 में HTTP अनुरोध अपग्रेड करने का अनुरोध करता है तो स्टेटस डिस्क्रिप्शन अब समर्थित नहीं हैं, इसलिए यदि आप 400 (खराब अनुरोध) के साथ जवाब देते हैं तो यह केवल संख्यात्मक 400 पर ही हो जाएगा। "HTTP/2 does not define a way to carry the version or reason phrase that is included in an HTTP/1.1 status line."

+0

धन्यवाद एक बहुत, संभोग ठीक से ** Stackoverflowing बिना :-) मैं एक दिन बर्बाद ** मुसीबत। –

8

तो web.config फेरबदल एक विकल्प नहीं है, नीचे दिए गए मदद मिल सकती है:

Response.TrySkipIisCustomErrors = true; 
+0

यह चुनिंदा आवेदन के लिए अच्छा हो सकता है। मेरे मामले में, मैं वास्तव में केवल अपने AJAX प्रतिक्रियाओं को अकेला छोड़ना चाहता हूं ताकि क्लाइंट कोड इसके लिए इच्छित त्रुटि संदेशों को प्राप्त कर सके। – Will

संबंधित मुद्दे