我正在尝试验证表示 url 的字符串是否是相对的,但它似乎Uri.TryCreate()
会接受任何没有协议的 url 作为相对的(即:www.domain.com/something/else.aspx)。但我只需要 /something/else.aspx/
例如,这个测试字符串在尝试进入uri.PathAndQuery
第 9 行时总是会抛出异常。即使TryCreate()
返回 true。
string test = "/something/else.aspx";
bool isValid;
var url = getPathAndQuery(test, out isValid);
private string getPathAndQuery(string url, out bool isValid) {
Uri uri;
isValid = Uri.TryCreate(url, UriKind.Relative, out uri);
try {
return isValid ? uri.PathAndQuery : string.Empty;
} catch (Exception e) {
isValid = false;
return string.Empty;
}
}
示例输入/输出:
输入:/something/else.aspx ==> 输出:/something/else.aspx
输入:www.domain.com/something/else.aspx ==> 输出:/something/else.aspx
输入: http: //www.domain.com/something/else.aspx ==> 输出:string.Empty
给定 url 的相对路径,我如何验证它确实是相对的,并且在用户也通过域的情况下获取路径和查询?