2011-02-23 25 views
29

के लिए एन्कोडिंग पैरामीटर मेरे पास एक सिल्वरलाइट एप्लिकेशन है जो एक यूआरएल बना रहा है। यह यूआरएल एक आरईएसटी-आधारित सेवा के लिए एक कॉल है। यह सेवा एक एकल पैरामीटर की अपेक्षा करती है जो किसी स्थान का प्रतिनिधित्व करती है। स्थान "शहर, राज्य" के रूप में है। इस URL बनाने के लिए, मैं निम्नलिखित कोड फोन कर रहा हूँ:यूआरएल

string url = "http://www.domain.com/myService.svc/"; 
url += HttpUtility.UrlEncode(locationTextBox.Text); 

एक उपयोगकर्ता locationTextBox में प्रवेश करता है, तो "शिकागो, आईएल", परिणाम इस प्रकार है:

http://www.domain.com/myService.svc/chicago%2c+il 

हकीकत में हालांकि, मैं यूआरएल की तरह दिखने की उम्मीद थी;

http://www.domain.com/myService.svc/chicago,%20il 

ब्राउज़र यूआरएल के माध्यम से मेरी सेवा का परीक्षण करते समय, जिसकी मुझे उम्मीद है। हालांकि, जेनरेट किया जा रहा यूआरएल काम नहीं कर रहा है। मैं क्या गलत कर रहा हूं?

उत्तर

50

मैं Uri की अनुशंसा करता हूं। HttpUtility फ़ंक्शंस का उपयोग करने के बजाय। Server.UrlEncode vs. HttpUtility.UrlEncode में चर्चा देखें।

+1

पर नया एक मैं इस की कोशिश की है और अभी भी '#' चरित्र के लिए त्रुटि मिली। Pls यहां मेरा प्रश्न देखें: http://stackoverflow.com/questions/31699335/regex-to- validate-a-string-that-will-be-one-of-the-of-wcf-rest-method-url- parame – Muhammedh

6

UrlPathEncode() विधि का उपयोग करने का प्रयास करें। http://msdn.microsoft.com/en-us/library/h10z5byc.aspx

उद्धरण:: पर टिप्पणी देखें

आप UrlEncode() विधि या UrlPathEncode() विधि के साथ उपयोग करके किसी URL सांकेतिक शब्दों में बदलना कर सकते हैं। हालांकि, विधियों के विभिन्न परिणाम लौटते हैं। UrlEncode() विधि प्रत्येक स्पेस वर्ण को प्लस कैरेक्टर (+) में परिवर्तित करती है। UrlPathEncode() विधि प्रत्येक स्पेस कैरेक्टर को स्ट्रिंग "% 20", में परिवर्तित करती है जो हेक्साडेसिमल नोटेशन में एक स्पेस का प्रतिनिधित्व करती है। UrlPathEncode() विधि का उपयोग करें जब आप URL के पथ हिस्से को पर एक सतत डीकोडेड URL, की गारंटी देते हैं, चाहे प्लेटफ़ॉर्म या ब्राउज़र डिकोडिंग निष्पादित करता हो।

0

सुरक्षित शर्त एंटीएक्सएसएस लाइब्रेरी का उपयोग करना है। इसमें विभिन्न उद्देश्यों (जैसे यूआरएल एन्कोड, एचटीएमएल और एचटीएमएलएट्रिब्यूट एन्कोड, आदि) के लिए एन्कोडिंग सामग्री के लिए अधिक मानक (और सुरक्षित) संस्करण हैं। वहाँ वर्ष 3.1 संस्करण (http://www.microsoft.com/downloads/details.aspx?FamilyId=051ee83c-5ccf-48ed-8463-02f56a6bfc09) एमएस साइट से डाउनलोड के लिए उपलब्ध है, जो पुराने नेट संस्करणों के साथ काम करेंगे, और http://wpl.codeplex.com/