İlk olarak, bazı hızlı arkaplan ... Bir üçüncü taraf satıcıyla bir bütünleşmenin bir parçası olarak, bir grup bilgi içeren bir URL alan bir C# .Net web uygulamasına sahibim. sorgu dizesi. Bu URL bir MD5 hash ve paylaşılan bir gizli anahtarla imzalanır. Temel olarak, sorgu dizesini çekerim, karmalarını kaldırırım, kalan sorgu dizesinde kendi karımı gerçekleştiririm ve benimki sağlanan ürünle eşleştiğinden emin olurum..Net Uri Kodlama RFC 2396 vs RFC 3986
aşağıdaki şekilde Uri alınırken ediyorum ...
Uri uriFromVendor = new Uri(Request.Url.ToString());
string queryFromVendor = uriFromVendor.Query.Substring(1); //Substring to remove question mark
Sorunum bir özgü (ü) gibi özel karakterler içeren sorgu dizeleri kaynaklanmaktadır. Satıcı, hashlarını %FC
olan RFC 2396 göstergesine dayanarak hesaplamaktadır. Benim C#. Net uygulaması %C3%BC
olan RFC 3986 gösterimi dayalı bir karma olduğunu hesaplıyor. Söylemeye gerek yok, bizim karmalarımız eşleşmiyor ve hatalarımı atıyorum.
Strangely, documentation for the Uri class in .Net, RFC 3986'ya başka şekilde ayarlanmadıkça RFC 2396'yı izlemesini söylüyor, ancak bu davranış için gerekli olduğunu söylediğim web.config
dosyamda girdim yok.
Uri yapıcısını RFC 2396 sözleşmesini kullanmaya nasıl zorlayabilirim?
Bunun başarısız olması, RFC 3986 sekizli çiftini RFC 2396 sekizlilere dönüştürmenin kolay bir yolu var mı? Bu kırmızı ringa biraz ise
Sorunuzla ilgisi yok, ama neden burada yeni bir Uri oluşturuyorsunuz? String stringiFromVendor = Request.Url.Query.Substring (1); ' – magnattic
Sadece hangi .NET sürümünü kullanıyorsunuz? –
Kullanıyorum. Net 4.0. Ayrıca, merakla, 'Request.Url.Query' kullanmayı denediğimde, umlaut,% karakteri olan '% ufffd' olarak geliyordu. – Colin