【发布时间】:2014-07-24 20:52:59
【问题描述】:
我正在尝试验证表示 url 的字符串是否是相对的,但似乎Uri.TryCreate() 将接受任何没有协议的 url 作为相对的(即:www.domain.com/something/else.aspx)。但我只需要 /something/else.aspx/
例如,当尝试在第 9 行获取 uri.PathAndQuery 时,此测试字符串总是会抛出异常。即使 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 的相对路径,我如何验证它确实是相对的,并在用户也通过域的情况下获取路径和查询?
【问题讨论】:
-
验证它是否是相对的很容易,但是仅获取可能包含域的 url 的路径和查询有点困难。我该怎么做呢?
-
您能否提供一些示例输入和预期输出?如果路径是相对的,应该返回多少路径?
标签: c# uri url-validation