2015-12-02 46 views
0

作爲自定義登錄頁面的一部分,我試圖獲取可能表示絕對URL或相對URL的URL字符串的查詢字符串部分。如果它是絕對URL,我可以使用Uri.Query屬性,但相對URL不支持。從可能相對的URL獲取查詢字符串

是否像從'?'的第一個實例開始獲取子串一樣簡單?或者是否有可能在查詢字符串之前包含問號?或者可以在查詢字符串之後出現任何其他文本?

returnUrl.Substring(returnUrl.IndexOf('?')) 

凡RETURNURL可以是絕對的:"http://www.example.com/anydir/any-page1?param=1"或相對:"/anydir/any-page?param=1"

回答

0

只有第一個問題的URL標記具有重要意義,表示查詢字符串的開始。任何後它被視爲字面問號。

參見RFC 3986 3.43.3

它音符但是:

字符斜線( 「/」)和問號( 「?」)被允許
片段標識符中表示數據。要注意的是,當它被用作基礎URI的相對引用

+0

所以,它聽起來就像它應該是從子有些
舊的,錯誤的實現可能不正確地處理這些數據
?至 #。那麼以這種方式解析字符串是最好的方法,還是有內置任何東西來幫助從相對URL獲取查詢字符串?我打算將相對網址轉換爲絕對網址,但目前我不知道我是在處理相對網址還是絕對網址。 – xr280xr