C#,有没有比IsWellFormedUriString验证URL格式更好的方法?

是否有更好/更准确/更严格的方法/方法来查明URL是否格式正确?

使用:

bool IsGoodUrl = Uri.IsWellFormedUriString(url, UriKind.Absolute);

不抓住一切。 如果我输入htttp://www.google.com并运行该过滤器,它会通过。 然后,当我调用WebRequest.Create时,我得到一个NotSupportedException WebRequest.Create

这个不好的网址也会通过下面的代码(这是唯一可以找到的其他过滤器):

Uri nUrl = null;
if (Uri.TryCreate(url, UriKind.Absolute, out nUrl))
{
    url = nUrl.ToString(); 
}

Uri.IsWellFormedUriString("htttp://www.google.com", UriKind.Absolute)返回true的原因是因为它的形式可能是有效的Uri。 URI和URL不相同。

请参阅:URI和URL之间有什么区别?

在你的情况下,我会检查new Uri("htttp://www.google.com").Scheme等于httphttps


技术上,根据URL规范, htttp://www.google.com是格式正确的网址。 NotSupportedException被抛出,因为htttp不是注册方案。 如果这是一个格式不正确的URL,您将得到一个UriFormatException 。 如果你只关心HTTP(S)URL,那么只需检查该方案。


格雷格的解决方案是正确的。 但是,您可以使用URI来验证所有协议(方案),并将其视为有效。

public static bool Url(string p_strValue)
{
    if (Uri.IsWellFormedUriString(p_strValue, UriKind.RelativeOrAbsolute))
    {
        Uri l_strUri = new Uri(p_strValue);
        return (l_strUri.Scheme == Uri.UriSchemeHttp || l_strUri.Scheme == Uri.UriSchemeHttps);
    }
    else
    {
        return false;
    }
}
链接地址: http://www.djcxy.com/p/12119.html

上一篇: C#, Is there a better way to verify URL formatting than IsWellFormedUriString?

下一篇: Is there a way to have index.html functionality with content hosted on S3?