किसी भी लंबाई के अनुरोध की अनुमति देने के लिए web.config को कैसे कॉन्फ़िगर करें


138

मैं एक साइट का निर्माण कर रहा हूं जिसमें मैं एक textarea तत्व के मूल्य से एक फ़ाइल क्लाइंट साइड बनाना चाहूंगा।

मेरे पास ऐसा करने के लिए कोड है, लेकिन मुझे यह त्रुटि मिल रही है

HTTP त्रुटि 404.15 - नहीं मिला अनुरोध फ़िल्टरिंग मॉड्यूल एक अनुरोध से इनकार करने के लिए कॉन्फ़िगर किया गया है जहां क्वेरी स्ट्रिंग बहुत लंबा है।

क्या इसे ओवरराइड करने का कोई तरीका है ताकि मैं किसी भी आकार के अनुरोधों को संसाधित कर सकूं?

यदि नहीं, तो क्या फाइलसिस्टम / सक्रिय एक्स ऑब्जेक्ट का उपयोग किए बिना फाइल क्लाइंट साइड जेनरेट करने का एक तरीका है?

धन्यवाद


8
आप जिस पर विचार करना चाहते हैं वह यह है कि भले ही क्वेरी स्ट्रिंग की लंबाई IIS या आपके एप्लिकेशन के लिए कॉन्फ़िगर करने योग्य हो, लेकिन URL लंबाई के लिए एक HTTP मानक है। चूंकि आप एक क्वेरी स्ट्रिंग का उपयोग कर रहे हैं, आप URL के एक भाग के रूप में मान पास कर रहे हैं। अधिकतम URL वर्ण लंबाई 2000 वर्ण है। यदि आपके मूल्य लंबे समय तक चलने वाले हैं, तो क्वेरी स्ट्रिंग में उन्हें पारित करने के बजाय मूल्यों को पोस्ट करना सबसे अच्छा होगा।
जेफ लाफे

2
Jlafay से सहमत हैं। जब आप 2-3 से अधिक सरल पैरामीटर रखते हैं, तो मूल्यों को पोस्ट करने के लिए यह सबसे अच्छा अभ्यास है। और जब आप क्वेरी स्ट्रिंग का उपयोग करते हैं तो उन्हें एन्क्रिप्ट करना सुनिश्चित करें।
जैक

जवाबों:


243

अपने web.config में निम्नलिखित जोड़ें:

<system.webServer>
  <security>
    <requestFiltering>
      <requestLimits maxQueryString="32768"/>
    </requestFiltering>
  </security>
</system.webServer>

देख:

http://www.iis.net/ConfigReference/system.webServer/security/requestFiltering/requestLimits

टिप्पणियों को प्रतिबिंबित करने के लिए अद्यतन किया गया।

RequestFiltering [IIS सेटिंग्स स्कीमा] के लिए requestLimits तत्व

आपको अपने web.config में निम्नलिखित को भी जोड़ना पड़ सकता है

<system.web>
    <httpRuntime maxQueryStringLength="32768" maxUrlLength="65536"/>
</system.web>

देखें: httpRuntime Element (ASP.NET सेटिंग स्कीमा)

बेशक, ऊपर की विन्यास सेटिंग्स में संख्या (32768 और 65536) सिर्फ उदाहरण हैं। आपको उन सटीक मानों का उपयोग करने की आवश्यकता नहीं है।


24
वह अकेला मेरे लिए काफी नहीं था। मुझे इसे system.web सेक्शन में भी जोड़ना था: <httpRuntime maxQueryStringLength = "8192" />
रोब

2
nnn अधिकतम स्ट्रिंग लंबाई है जिसे आप अनुमति देना चाहते हैं, जैसे 32768
मैट वारब्लो


मैंने प्रत्येक को व्यक्तिगत रूप से आज़माया, system.webServer के तहत सुरक्षा नोड सेट करना और फिर httpRuntant नोड के लिए केवल विशेषताओं को जोड़ना और जोड़ना। मुझे काम करने के लिए निश्चित रूप से जरूरत थी। बहुत धन्यवाद!
डेविड गुंडरसन

2
नोट: <httpRuntime> टैग <system.web> : <system.web> <httpRuntime maxQueryStringLength = "32768" maxUrlLength = "65536" /> </ system.web>
LePatay

33

मेरे मामले में (विजुअल स्टूडियो 2012 / IIS एक्सप्रेस / ASP.NET MVC 4 ऐप / .नेट फ्रेमवर्क 4.5) 30 मिनट के परीक्षण और त्रुटि के बाद वास्तव में क्या काम किया गया था maxQueryStringLength, <httpRuntime>टैग में संपत्ति सेट कर रहा था :

<httpRuntime targetFramework="4.5" maxQueryStringLength="10240" enable="true" />

maxQueryStringLengthकरने के लिए चूक 2048

इसके बारे में यहाँ और अधिक:

स्वीकार्य URL की सीमा का विस्तार करना


मैंने इसे @MattVarblow के<system.webServer> रूप में स्थापित करने की कोशिश की , लेकिन यह काम नहीं आया ... और इसका कारण यह है कि मैं अपने 8 पर विंडोज 8 के साथ देव मशीन पर IIS एक्सप्रेस (IIS 8 पर आधारित) का उपयोग कर रहा हूं।

जब मैंने अपने ऐप को प्रोडक्शन एन्वायरमेंट (Windows Server 2008 R2 के साथ IIS 7) में तैनात किया, तो IE 10 ने लंबे क्वेरी स्ट्रिंग्स के साथ AJAX अनुरोधों में 404 त्रुटियों को वापस करना शुरू कर दिया। तब मुझे लगा कि समस्या क्वेरी स्ट्रिंग से संबंधित थी और @ मैटवर्ब्लो के उत्तर की कोशिश की। यह सिर्फ IIS 7. पर काम किया :)


2
मेरे लिए यह सक्षम = "सत्य" था जिसने जादू कर दिया :)
जोहान कोम्ब्रिंक

6

जाँच करने के लिए कुछ और: यदि आपकी साइट एमवीसी का उपयोग कर रही है, तो ऐसा हो सकता है यदि आपने अपने लॉगिन नियंत्रक वर्ग में [अधिकृत] जोड़ा हो। यह लॉगिन विधि का उपयोग नहीं कर सकता क्योंकि यह अधिकृत नहीं है इसलिए यह लॉगिन विधि -> बूम पर पुनर्निर्देशित करता है।


धन्यवाद! मुझे इस समस्या का अनुभव हुआ क्योंकि मैंने मेनू / नेविगेशन को एक आंशिक दृश्य में स्थानांतरित कर दिया और एक अन्य नियंत्रक जो अनाम कनेक्शन की अनुमति नहीं देता था।
वेस्टरलंड.आईओ

एक और मामला जहां त्रुटि संदेश, हालांकि सच है, वास्तविक समस्या से कोई संबंध नहीं रखता है।
स्टीव स्मिथ

1
परियोजना के गुणों की भी जाँच करें क्योंकि यह हो सकता है कि Windows प्रमाणीकरण "सक्षम" है और अनाम प्रमाणीकरण अक्षम है "। Pls इस विस्तृत लेख को देखें - त्रुटि (विजुअल स्टूडियो 2013, MVC5): अनुरोध फ़िल्टरिंग मॉड्यूल एक अनुरोध को अस्वीकार करने के लिए कॉन्फ़िगर किया गया है जहां क्वेरी स्ट्रिंग बहुत लंबी है
fujiFX

5

यदि आप IIS 8.5 वेब सर्वर चलाते समय इस समस्या में भाग लेते हैं, तो आप निम्न विधि का उपयोग कर सकते हैं।

सबसे पहले, जिस IIS साइट पर आप काम कर रहे हैं, उसमें "रिक्वेस्ट फ़िल्टरिंग" मॉड्यूल ढूंढें , फिर उसे डबल क्लिक करें ...

यहां छवि विवरण दर्ज करें

अगला, आपको नीचे दिखाए गए सफेद क्षेत्र में राइट क्लिक करने की आवश्यकता है, फिर "फीचर सेटिंग संपादित करें" नामक संदर्भ मेनू विकल्प पर क्लिक करें

यहां छवि विवरण दर्ज करें

फिर आखिरी बात यह है कि 2048 से "अधिकतम क्वेरी स्ट्रिंग (बाइट्स)" मूल्य को कुछ और अधिक उपयुक्त रूप में बदलें जैसे कि आपकी आवश्यकताओं के लिए 5000

यहां छवि विवरण दर्ज करें


धन्यवाद, यह मेरे लिए सबसे सरल और
कारगर

धन्यवाद दोस्त!!!!!
Noobie

0

मेरे पास इसी तरह का मुद्दा था एएसआई वेब एप्लिकेशन को आईआईएस 8 में तैनात करने की कोशिश करना। इसे ठीक करने के लिए जैसा कि मैंने मैट और लेनियल ने सुझाव दिया था। लेकिन अनाम प्रमाणीकरण सक्षम करने के लिए मेरी साइट की प्रमाणीकरण सेटिंग को भी कॉन्फ़िगर करना पड़ा। और वह मेरे लिए काम करता है।


0

मुझे अपने लॉगिन पृष्ठ में ActionResult कार्यों में [AllowAnonymous] जोड़ना था क्योंकि उपयोगकर्ता अभी तक प्रमाणित नहीं किया गया था।


0

यदि आपकी वेबसाइट प्रमाणीकरण का उपयोग कर रही है, लेकिन आपके पास IIS (जैसे बेसिक, फ़ॉर्म आदि आदि) में स्थापित सही प्रमाणीकरण विधि नहीं है, तो ब्राउज़र एक रीडायरेक्ट लूप में फंस जाएगा। इससे रीडायरेक्ट url लंबे समय तक और लंबे समय तक फट जाता है जब तक कि वह फट न जाए।


0

जब आप अजाक्स कॉल पैरामीटर में बड़े स्ट्रिंग पास करते हैं तो यह भी त्रुटि उत्पन्न करेगा।

अतः इसके लिए ajax में टाइप पोस्ट का उपयोग आपकी समस्या को 100% हल करेगा और web.config में लंबाई निर्धारित करने की आवश्यकता नहीं है।

// var UserId = 1000 उपयोगकर्ता की सरणी

$ .ajax ({वैश्विक: गलत, url: SitePath + "/ उपयोगकर्ता / getAussizzMembersData", "data": {UserIds: UserId}, "type": "POST", "dataType": "JSON"}}


-1

HTTP त्रुटि 404.15 - नहीं मिला अनुरोध फ़िल्टरिंग मॉड्यूल एक अनुरोध से इनकार करने के लिए कॉन्फ़िगर किया गया है जहां क्वेरी स्ट्रिंग बहुत लंबा है।

इस समस्या को हल करने के लिए, स्रोत कोड में जांचें कि क्या Formटैग में कोई संपत्ति methodहै / सेट स्थिति।

यदि हां, तो methodसंपत्ति को हटा दिया जाना चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.