我正在使用以下代码验证网址,但在两种情况下都存在问题 检查重演为真。我应该如何在第二个选项中弄错?
这里布尔是真的
bool isWellFormedUriString = Uri.IsWellFormedUriString("http://stackoverflow.com/", UriKind.RelativeOrAbsolute);
这里也是如此
bool isWellFormedUriString = Uri.IsWellFormedUriString("ddddd", UriKind.RelativeOrAbsolute);
现在我做的时候
_uri = new Uri(_url);
我得到了例外......
答案 0 :(得分:6)
试试这个:
Uri result;
if (Uri.TryCreate("http://stackoverflow.com",UriKind.Absolute, out result) &&
result.Scheme == Uri.UriSchemeHttp)
{
//Use the valid Uri here
}
我限制了有效的方案,因为否则甚至目录URI都是有效的(例如:c:\\directory\\filename
)
答案 1 :(得分:6)
字符串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);
来自docs:
绝对URI的特点是对资源的完整引用(例如:http://www.contoso.com/index.html),而相对Uri依赖于先前定义的基URI(例如:/index.html)。