验证字符串是相对url不工作
本文关键字:工作 url 相对 字符串 验证 | 更新日期: 2023-09-27 18:14:46
我试图验证表示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;
}
}
输入/输出示例:
输入://其他的东西。Aspx ==>输出:/something/else.aspx
输入:www.domain.com/something/else.aspx ==>输出:/something/else.aspx
input: http://www.domain.com/something/else.aspx ==> output: string。空
给定url的相对路径,我如何验证它确实是相对的,并且在用户也通过域的情况下仅获取路径和查询?
PathAndQuery
返回的路径始终是绝对路径,所以对于相对路径不工作