我正在使用以下代码来验证网址,但问题是在两种情况下检查都会重新生成.我应该如何在第二个选项中弄错?
布尔是真的
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);我得到了例外......
试试这个:
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)
字符串ddddd可以是完整URI的有效"部分",因此使用Relative或RelativeOrAbsolute返回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).