2011-12-09 33 views
9

में अमान्य है यहाँ मेरी यूआरएल हैअनुरोध URL आईआईएस 7

http://abc.domain.com/controller/action/A74444C3A7FA858C7995CA9954CBCF1E26604634767C5575396D908E8415CF8CCC04C05F49FED0AA9D9743B69ABF232BDE9787A5222D081DA638896C0D2379A673E1747A2FFE1158F14AF098B2899D2ABEB4EA738D89369627E479796B6B2B9EA9B247CC59EF10E3A88B6A56A87F0818E2AD2A942FFA31F1C941BB7AF6FDC55FE6733353F28DFAC1827688604CBFBAB4856E6C75F810D13923F9D913F51F5B02980163E6CD63BC04610AD2C12E07360D7BC2C69F1B0CD03E

URL को देखने के रूप में सब कुछ एन्क्रिप्टेड है में कोई अमान्य वर्ण हैं। फिर भी मुझे

खराब अनुरोध - अवैध URL HTTP त्रुटि 400. अनुरोध URL अमान्य है।

मैं जानता हूँ कि यूआरएल बहुत लंबा है और मैं जोड़कर मेरी कैसिनी में है कि समस्या को हल करने में सक्षम था इस httpRuntime maxUrlLength = "512"

web.config में

हालांकि IIS7 में जाने के बाद भी requestfiltering maxurl और maxquerystring मानों के साथ खेलना मैं इसे हल करने में सक्षम नहीं हूं।

यह एक asp.net mvc 3 एप्लिकेशन है।

+0

को खंड की लंबाई सेट हो जाएगा आप [ ''] (http के साथ खेल की कोशिश की है .iis.net/ConfigReference/system.webServer/सुरक्षा/requestFiltering/requestLimits)? मुझे पता है कि यह आईआईएस 7 से एक संस्करण या दो बार है, लेकिन इसमें कुछ विवाद हो सकते हैं। –

+0

हां मैंने यह अनुरोध जोड़ा है systemUwel = "512" system.webserver – Qudoos

उत्तर

9

आपकी समस्या यह है कि आप एक क्वेरी स्ट्रिंग का उपयोग नहीं कर रहे हैं, लेकिन एक पथ। एक पथ की अधिकतम लंबाई 255 है।

+0

[एमएसडीएन के अनुसार] (http://msdn.microsoft.com/en-us/library/ms689462%28v=vs.90%29। एएसपीएक्स) डिफ़ॉल्ट maxUrl लंबाई (बाइट्स में) 4096 –

+0

आप सही हो सकते हैं, लेकिन यह स्पष्ट नहीं करता है कि यह कैसिनी पर क्यों काम करता है। मेरी जीत 7 डेवलपर मशीन पर यह कैसिनी के साथ काम करती है लेकिन जब मैं आईआईएस 7 के तहत एक ही साइट चलाता हूं तो काम नहीं करता है। यदि सीमा पथ पर है, तो यह ऑपरेटिंग सिस्टम स्तर पर होनी चाहिए। नहीं? – Qudoos

+0

@ ब्रैड, हाँ मैंने इसे पढ़ा है और यह देखने के लिए वास्तव में बड़ी संख्या में खेला है कि यह – Qudoos

21

यह एक भावी पीढ़ी के लिए और अपने खुद के समस्या पर नज़र रखने के लिए है। हालांकि, यह एक और जवाब में कहा गया है, स्पष्ट रूप से नहीं।

मुझे अपने अंत में एक ही समस्या है। जवाब लंबे यूआरएल सेगमेंट को क्वेरी स्ट्रिंग में स्थानांतरित करने के लिए है। संभालने के लिए आसान है।

समस्या यह है कि HTTP.sys अनुरोध को भी दे नहीं रहा है क्योंकि यूआरएल का एक खंड 260 या उससे अधिक वर्णों से अधिक है। हालांकि, हमें अभी भी इसका समर्थन करना पड़ा।

आप रजिस्ट्री में उस सेटिंग को बदल सकते हैं। एक बार रीबूट करने के बाद, यूआरएल काम करेगा।

रजिस्ट्री: // www:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters] 
"UrlSegmentMaxLength"=dword:00000400 

यह प्रभावी रूप से 1024.

Source

+5

*** यह *** *** असली *** ** समाधान ** है! एक आकर्षण की तरह काम करता है (Win8, IIS 8) –

+2

यह निश्चित रूप से विंडोज सर्वर 2012 पर काम करता था। केवल अंतर यह था कि कुंजी वहां नहीं थी इसलिए इसे जोड़ा जाना चाहिए ... – vidriduch

+1

@vidriduch हां इसे बनाने की जरूरत है। अधिकांश रजिस्ट्री सेटिंग्स की तरह, यदि कुंजी मौजूद नहीं है, तो डिफ़ॉल्ट लागू होगा। यहां 260 होने का डिफ़ॉल्ट है। :) –