【问题标题】:Uri.TryCreate returns true for any string value?Uri.TryCreate 为任何字符串值返回 true?
【发布时间】:2011-05-08 20:32:48
【问题描述】:

我正在尝试使用 Uri.TryCreate 方法验证 Uri,当我使用无效字符串调用它时,该方法返回 true。任何想法为什么?我的代码如下:

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

【问题讨论】:

    标签: c# .net validation url uri


    【解决方案1】:

    这是一个有效的相对 URL。无效 URI 的示例是:

    "http://example.com<>"
    

    如果您只想允许绝对 URI,请使用 UriKind.Absolute

    然后该示例将无法解析。

    【讨论】:

    • 有趣,我想我没有把它当成一个文件夹。我正在尝试验证网站 URL,所以我没有考虑文件夹路径。谢谢!
    • 它可能是网站上的相对 URI。例如。如果您使用的是http://example.com/,则该相对 URL 指的是http://example.com/NotAURL
    • 是的,这就是我所做的——将其切换为 UriKind.Absolute。再次感谢。
    • 空字符串或“?”根据此方法,也是有效的相对 uri。这有什么意义?
    • 使用空字符串作为相对 URL 引用当前文档。例如,如果当前文档是http://example.org/foo/bar.html,则空的相对 URL 指的是同一个文件。相对 URL ? 也指具有空查询字符串的同一文件;如果原始 URL 已经有一个查询字符串,则新的会替换旧的。例如,从http://example.org/foo/bar.html?foo=bar 开始,相对 URL ?baz=qux 产生http://example.org/foo/bar.html?baz=qux。 (空的相对 URL 保留原始查询字符串。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多