验证字符串是相对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的相对路径,我如何验证它确实是相对的,并且在用户也通过域的情况下仅获取路径和查询?

验证字符串是相对url不工作

PathAndQuery返回的路径始终是绝对路径,所以对于相对路径不工作