Uri.TryCreate对于任何字符串值都返回true?

21

我正在尝试使用Uri.TryCreate方法验证一个URI,但当我使用一个无效的字符串调用它时,该方法返回了true。有什么想法吗?我的代码如下:

    private void button1_Click(object sender, EventArgs e)
    {
        Uri tempValue;
        if (Uri.TryCreate("NotAURL", UriKind.RelativeOrAbsolute, out tempValue))
        {
            MessageBox.Show("?");
        }
    }
1个回答

27

这是一个有效的相对路径URL。一个无效URI的例子是:

"http://example.com<>"
如果你想只允许绝对URI地址,使用UriKind.Absolute
示例将因此无法解析。

有趣,我想我没有把它看作一个文件夹。我正在尝试验证网站URL,所以我没有考虑文件夹路径。谢谢! - Scott Scowden
3
可以是网站上的相对URI。例如,如果你在 http://example.com/,那么这个相对URL指的是 http://example.com/NotAURL - Matthew Flaschen
是的,这就是我所做的——将其切换为UriKind.Absolute。再次感谢。 - Scott Scowden
这种方法中,空字符串或“?”也是有效的相对URI。这有什么意义呢? - user764754
使用空字符串作为相对路径引用当前文档。例如,如果当前文档是 http://example.org/foo/bar.html,那么空的相对路径引用相同的文件。相对路径 ? 也指向带有空查询字符串的相同文件;如果原始 URL 已经有查询字符串,则新的查询字符串将替换旧的查询字符串。例如,从 http://example.org/foo/bar.html?foo=bar 开始,相对 URL ?baz=qux 产生 http://example.org/foo/bar.html?baz=qux。(空的相对 URL 保留原始查询字符串。) - Mike Rosoft

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接