为什么URIKind
有
Absolute
,Relative
,RelativeOrAbsolute
。
为什么不总是使用RelativeOrAbsolute
来防止代码爆炸?
答案 0 :(得分:3)
因为下游代码可能正在期待其中一个。例如,如果您的代码使用绝对基URI http://example.com/foo/,并且您希望用户输入某个资源的路径,则需要相对URI。您不希望他们输入http://afu.com/myname/home,因为当您尝试使用用户输入的值时,您最终会得到错误的路径;或2)尝试创建URI" http://example.com/foo/htta://afu.com/myname/home"。
时出错如果您期望绝对URI并且某人为您提供相对URI,则会发生同样的事情。如果您没有定义的基本URI,那么该相对URI对您没有任何好处。
你可以防止代码中的爆炸"在用户输入时间,但是对于其他人(也许是你)稍后清理会造成更糟糕的问题。这三个值 - 绝对值,相对值,不确定值 - 让您决定什么是有效的,并允许您在输入错误数据后立即拒绝错误数据。
答案 1 :(得分:1)
如果查看UriKind的文档,您会看到:
为Uri.IsWellFormedUriString定义Uris的种类(String, UriKind)和几种Uri.Uri方法。
它使您能够区分绝对和相对URI。
现在考虑一个示例,您希望用户只输入绝对URI并验证它是否格式正确。然后你会做:
string inputUri = "/index.html)";
bool ifValid = Uri.IsWellFormedUriString(inputUri, UriKind.Absolute);
如果只有RelativeOrAbsolute
,则上述内容将返回true。