2015-12-02 47 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