6
如何阻止System.Uri類解除傳遞給其構造函數的編碼URL?考慮以下代碼: -如何阻止System.Uri解密URL?
Uri uri = new Uri("http://foo.bar/foo%2FBar");
Console.WriteLine(uri.AbsoluteUri);
uri = new Uri("http://foo.bar/foo%2FBar", false);
Console.WriteLine(uri.AbsoluteUri);
uri = new Uri("http://foo.bar/foo%2FBar", true);
Console.WriteLine(uri.AbsoluteUri);
在每種情況下,輸出爲「http://foo.bar/foo/bar」。我如何確保在實例化Uri實例後,Uri.AbsoluteUri將返回「http://foo.bar/foo%2FBar」?
。我的問題實際上是當試圖構建一個HttpWebRequest實例來進行一個REST調用,其中URL可能包含一個轉義字符(包括上面顯示的斜線)。我使用WebRequest.Create(UrlString)重載來創建請求,並發現傳遞給服務器的URL解密了編碼的斜槓,導致服務器端錯誤。進一步的測試表明,這可能是Uri類的問題,因此我的問題。 – Cleggy 2012-04-03 10:03:57
查看鏈接更新 – PinnyM 2012-04-03 13:45:22
感謝您的鏈接,PinnyM。由於它的「可怕的黑客」性質,我想知道我是否應該走這條路,或者完全採取另一個方案來解決我的問題。目前我正在嘗試調用REST服務,但我可以靈活地將其更改爲SOAP,這也應該可以緩解這個問題。儘管如此,你已經解決了這個問題,所以我打算把這個標記爲正確的答案。 – Cleggy 2012-04-03 20:15:26