从URL获取可能相对的查询字符串

时间:2015-12-02 20:15:59

标签: c# asp.net c#-4.0

作为自定义登录页面的一部分,我试图获取可能代表绝对或相对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"

1 个答案:

答案 0 :(得分:0)

只有URL中的第一个问号才有意义指示查询字符串的开头。之后被视为文字问号。

请参阅RFC 3986 3.43.3

但确实注意到:

  

允许使用字符斜杠(“/”)和问号(“?”)   表示片段标识符内的数据。要小心一些   较旧的,错误的实现可能无法正确处理此数据   当它被用作相对引用的基本URI时