मैंने जीईटी विधि के साथ jQuery AJAX कॉल के माध्यम से डब्ल्यूसीएफ सेवा तक पहुंचने का प्रयास किया। इसलिए, कभी-कभी यूआरएल पैरामीटर के साथ लंबा होता है।डब्ल्यूसीएफ प्राप्त यूआरएल लंबाई सीमा मुद्दे: खराब अनुरोध - अमान्य यूआरएल
जब पैरामीटर इतना लंबा हो जाता है, तो jQuery AJAX कॉल विफल रहता है, और कुछ भी नहीं देता है। इसलिए मैंने ब्रेक प्वाइंट लगाया और यूआरएल को परीक्षण के लिए बाहर निकाला। जब मैं ब्राउज़र में एक ही यूआरएल का प्रयास करता हूं (मैंने फ़ायरफ़ॉक्स और क्रोम की कोशिश की), तो यूआरएल की लंबाई बहुत लंबी होने पर यह निम्न लौटाती है।
गलत अनुरोध - अमान्य URL
HTTP त्रुटि 400 अनुरोध URL अमान्य है।
मैंने लंबाई सीमा भी जांच की। जब यूआरएल (एन्कोडेड प्रारूप में) में वर्णों की संख्या 1011 वर्णों (http: // सहित) से अधिक है तो मुझे केवल त्रुटि मिलती है।
किसी के पास एक ही स्थिति है और इसे कोई समाधान मिला है? क्या यह विंडोज सीमा है या इसे प्रोग्रामेटिक रूप से किसी भी सेटिंग्स के माध्यम से प्रबंधित किया जा सकता है?
मैंने पोस्ट विधि की कोशिश की, लेकिन मुझे नहीं पता कि मैं इसे काम नहीं कर सका। क्योंकि इसे कुछ web.config परिवर्तनों की आवश्यकता है।
संपादित
यूआरएल मैं त्रुटि URL के
http://localhost:64973/Member.svc/SaveMemberWithDetail/%7B%22ID%22%7C%222%22,%22TypeID%22%7C%222%22,%22Title%22%7C%22Mr.%22,%22FirstName%22%7C%22Firnas%22,%22MiddleName%22%7C%22%22,%22LastName%22%7C%22Aliyar%22,%22Gender%22%7C%221%22,%22DateOfBirth%22%7C%222000-01-01%22,%22Nationality%22%7C%22Sri%20Lankan%22%7D/%5B%7B%22AddressLine1%22%7C%22Changed%20Address%20Line1%22,%22AddressLine2%22%7C%22Colombo%22,%22City%22%7C%22Colombo%2010%22,%22State%22%7C%22WP%22,%22PostCode%22%7C%2201000%22,%22CountryID%22%7C%221%22,%22ID%22%7C%227%22,%22TypeID%22%7C%221%22%7D%5D/%5B%7B%22Telephone%22%7C%22015154645%22,%22TypeID%22%7C%221%22%7D%5D/%5B%7B%22EmailAddress%22%7C%[email protected]%22,%22ID%22%7C%2226%22,%22TypeID%22%7C%221%22%7D,%7B%22EmailAddress%22%7C%[email protected]%22,%22ID%22%7C%2227%22,%22TypeID%22%7C%221%22%7D,%7B%22EmailAddress%22%7C%[email protected]%22,%22ID%22%7C%2228%22,%22TypeID%22%7C%221%22%7D,%7B%22EmailAddress%22%7C%[email protected]%22,%22ID%22%7C%2229%22,%22TypeID%22%7C%221%22%7D,%7B%22EmailAddress%22%7C%[email protected]%22,%22ID%22%7C%2229%22,%22TypeID%22%7C%221%22%7D%5D/%7B%7D/481
unencoded संस्करण उत्पन्न करने के लिए परीक्षण किया गया है:
http://localhost:64973/Member.svc/SaveMemberWithDetail/{"ID"|"2","TypeID"|"2","Title"|"Mr.","FirstName"|"Firnas","MiddleName"|"","LastName"|"Aliyar","Gender"|"1","DateOfBirth"|"2000-01-01","Nationality"|"Sri Lankan"}/[{"AddressLine1"|"Changed Address Line1","AddressLine2"|"Colombo","City"|"Colombo 10","State"|"WP","PostCode"|"01000","CountryID"|"1","ID"|"7","TypeID"|"1"}]/[{"Telephone"|"015154645","TypeID"|"1"}]/[{"EmailAddress"|"[email protected]","ID"|"26","TypeID"|"1"},{"EmailAddress"|"[email protected]","ID"|"27","TypeID"|"1"},{"EmailAddress"|"[email protected]","ID"|"28","TypeID"|"1"},{"EmailAddress"|"[email protected]","ID"|"29","TypeID"|"1"},{"EmailAddress"|"[email protected]","ID"|"29","TypeID"|"1"}]/{}/481
मेरे पैरामीटर JSON ऑब्जेक्ट की तैयारी में हैं। मुझे नहीं लगता कि किसी भी पात्र समस्या का कारण बनते हैं, क्योंकि, अगर मैं कुछ अल्फा न्यूमेरिक वर्णों को सीमा से कम करने के लिए कम करता हूं, तो यह काम करता है।
मैं विंडोज 8 प्रोफेशनल में विजुअल स्टूडियो 2012 प्रीमियम में अपना एप्लिकेशन चला रहा हूं, इसलिए यह .NET 4.5 और आईआईएस एक्सप्रेस इसके साथ आया है।
आगे अनुसंधान
जब मैं इसकी जांच करने की कोशिश, इस सीमा मैं पहले से ही उल्लेख किया है जो पूर्ण यूआरएल की लंबाई है नहीं है। लेकिन, प्रत्येक पैरामीटर में लंबाई की सीमा है जो 260 वर्ण है।
तो, मुझे यूआरएल की कुल लंबाई के बारे में निश्चित नहीं है, लेकिन प्रत्येक पैरामीटर ("/" से अलग) की सीमा है। मैंने ऊपर दिए गए यूआरएल के साथ समस्या ईमेल पता JSON पैरामीटर 261 वर्ण लंबा है, नीचे दिया गया है।
[{"EmailAddress"|"[email protected]","ID"|"26","TypeID"|"1"},{"EmailAddress"|"[email protected]","ID"|"27","TypeID"|"1"},{"EmailAddress"|"[email protected]","ID"|"28","TypeID"|"1"},{"EmailAddress"|"[email protected]","ID"|"29","TypeID"|"1"},{"EmailAddress"|"[email protected]","ID"|"29","TypeID"|"1"}]
यदि मैं इससे 1 वर्ण हटा देता हूं, तो यह काम करता है।
क्या यह ब्राउज़र सीमा है? ओएस सीमा?
अद्यतन: समाधान
मैं एक समाधान जो मेरे लिए काम किया, जब मैं इस पर आगे शोध में पाया। मैं यहां अपडेट कर रहा हूं क्योंकि यह उन लोगों के लिए उपयोगी हो सकता है जो इस प्रश्न में आते हैं।
यह एक आईआईएस
समस्या है, क्योंकि बाकी यूआरएल में प्रत्येक पैरामीटर के डिफ़ॉल्ट अक्षरों की सीमा 260 जो रजिस्ट्री में परिभाषित किया जाता है की स्थापना है।
तो, आपको इस आकार सीमा को बढ़ाने के लिए रजिस्ट्री को अद्यतन करना होगा जहां आईआईएस सर्वर/आईआईएस एक्सप्रेस चल रहा है।
निम्न रजिस्ट्री का स्थान है:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters
और मान का नाम UrlSegmentMaxLength
है। यदि यह वहां नहीं है, तो REG_DWORD
के प्रकार के साथ एक बनाएं। और value data
जैसे हेक्साडेसिमल में 1000 या दशमलव में 4096 के लिए उच्च मान निर्दिष्ट करें।
यह एक http.sys सेटिंग है। Http.sys सेटिंग्स के बारे में अधिक जानकारी: http://support.microsoft.com/kb/820129
सुनिश्चित करें कि आप रजिस्ट्री परिवर्तनों को लागू करने के लिए सर्वर/मशीन को पुनरारंभ करें। और यही वह है।
"अद्यतन: समाधान" मेरे लिए काम करता है। फिमा, अगर आप अभी भी आसपास हैं, तो अगर आप अपने प्रश्न के उस खंड को उत्तर के रूप में पोस्ट करना चाहते हैं, तो मैं खुशी से इसे उखाड़ फेंक दूंगा। –
निश्चित दोस्त। यह सुनकर खुशी हुई कि मेरा समाधान मेरे लिए काम करता है। :) – Firnas
अद्यतन समाधान काम करता है। यह अभी भी PHP 5.6 और सर्वर 2012 R2 – FunkeDope