सबसे पहले, कुछ त्वरित पृष्ठभूमि ... किसी तीसरे पक्ष के विक्रेता के साथ एकीकरण के हिस्से के रूप में, मेरे पास एक सी # नेट वेब एप्लिकेशन है जो एक यूआरएल प्राप्त करता है जिसमें जानकारी का एक गुच्छा है क्वेरी स्ट्रिंग। उस यूआरएल को एमडी 5 हैश और एक साझा गुप्त कुंजी के साथ हस्ताक्षरित किया गया है। असल में, मैं क्वेरी स्ट्रिंग में खींचता हूं, अपने हैश को हटाता हूं, शेष क्वेरी स्ट्रिंग पर अपना खुद का हैश करता हूं, और सुनिश्चित करता हूं कि मेरा आपूर्ति किया गया था।नेट यूरी एन्कोडिंग आरएफसी 2396 बनाम आरएफसी 3 9 86
मैं निम्नलिखित तरीके से उरी पुन: प्राप्त करने हूँ ...
Uri uriFromVendor = new Uri(Request.Url.ToString());
string queryFromVendor = uriFromVendor.Query.Substring(1); //Substring to remove question mark
मेरे मुद्दा क्वेरी स्ट्रिंग यूमलॉट (यू) की तरह विशेष वर्ण से उत्पन्न कर रहा है। विक्रेता आरएफसी 23 9 6 प्रतिनिधित्व के आधार पर उनके हैश की गणना कर रहा है जो %FC
है। मेरा सी # नेट ऐप आरएफसी 3986 प्रतिनिधित्व के आधार पर हैश की गणना कर रहा है जो %C3%BC
है। कहने की जरूरत नहीं है, हमारे हैंश मेल नहीं खाते हैं, और मैंने अपनी त्रुटियों को फेंक दिया।
आश्चर्यजनक रूप से, documentation for the Uri class in .Net कहता है कि इसे आरएफसी 23 9 6 का पालन करना चाहिए जब तक कि अन्यथा आरएफसी 3986 पर सेट न हो, लेकिन मेरे पास web.config
फ़ाइल में प्रवेश नहीं है जो वे कहते हैं कि इस व्यवहार के लिए आवश्यक है।
मैं आरएफसी 23 9 6 सम्मेलन का उपयोग करने के लिए उरी कन्स्ट्रक्टर को कैसे मजबूर कर सकता हूं?
यह विफल हो रहा है, आरएफसी 3986 ऑक्टेट जोड़े को आरएफसी 2396 ऑक्टेट्स में परिवर्तित करने का कोई आसान तरीका है?
अपने प्रश्न के साथ कुछ भी करने के लिए नहीं, लेकिन आप यहां एक नया उरी क्यों बना रहे हैं? आप बस 'स्ट्रिंग क्वेरीफ्रॉन्डर = Request.Url.Query.Substring (1) कर सकते हैं; ' – magnattic
.NET का कौन सा संस्करण आप उपयोग कर रहे हैं? –
मैं .NET 4.0 का उपयोग कर रहा हूं। इसके अलावा, उत्सुकता से, जब मैंने 'Request.Url.Query' का उपयोग करने का प्रयास किया तो उमलॉट'% ufffd' के रूप में आ रहा था जो चरित्र है। – Colin