1

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

4

1 回答 1

0

返回的路径PathAndQuery始终是绝对路径,因此它不适用于相对路径。

于 2014-07-24T20:55:56.490 回答