URL验证IsWellFormedUriString始终返回true

Jea*_*hhe 2 c# url uri

我正在使用以下代码来验证网址,但问题是在两种情况下检查都会重新生成.我应该如何在第二个选项中弄错?

布尔是真的

 bool isWellFormedUriString = Uri.IsWellFormedUriString("http://stackoverflow.com/", UriKind.RelativeOrAbsolute);
Run Code Online (Sandbox Code Playgroud)

这也是事实

 bool isWellFormedUriString = Uri.IsWellFormedUriString("ddddd", UriKind.RelativeOrAbsolute);
Run Code Online (Sandbox Code Playgroud)

而现在,当我这样做时, _uri = new Uri(_url);我得到了例外......

Nas*_*ine 6

试试这个:

Uri result;
if (Uri.TryCreate("http://stackoverflow.com",UriKind.Absolute, out result) && 
    result.Scheme == Uri.UriSchemeHttp) 
{
    //Use the valid Uri here
}
Run Code Online (Sandbox Code Playgroud)

我限制了有效的方案,否则即使地目录的URI将是有效的(例如:c:\\directory\\filename)


Gra*_*ICA 6

字符串ddddd可以是完整URI的有效"部分",因此使用RelativeRelativeOrAbsolute返回true.

尝试将第二个参数更改为UriKind.Absolute:

bool isWellFormedUriString  // returns true
    = Uri.IsWellFormedUriString("http://stackoverflow.com/", UriKind.Absolute);

bool isWellFormedUriString  // returns false
    = Uri.IsWellFormedUriString("ddddd", UriKind.Absolute);
Run Code Online (Sandbox Code Playgroud)

来自文档:

绝对URI的特点是对资源的完整引用(例如:http://www.contoso.com/index.html),而相对Uri依赖于先前定义的基URI(例如:/index.html).