C#Uri.IsWellFormedUriString-像这样传递值http://http://helloworld 返回true。这是设计还是一个bug?
很抱歉,如果已经回答了这个问题(我搜索时找不到它),如果您传递了一个无效的URL值,如“”,则c#中的Uri.iswellFormedUrString应返回false 但是,它正在返回true(至少在.NETFramework 4.5中是这样)。我想知道将其视为格式良好的Uri字符串背后的逻辑。 还是一只虫子 提前谢谢 这不是一个bug。不验证uri的格式,因为文档中提到它与字符转义有关: 通过尝试使用该字符串构造URI来指示该字符串是否格式正确,确保该字符串不需要进一步转义C#Uri.IsWellFormedUriString-像这样传递值http://http://helloworld 返回true。这是设计还是一个bug?,c#,uri,C#,Uri,很抱歉,如果已经回答了这个问题(我搜索时找不到它),如果您传递了一个无效的URL值,如“”,则c#中的Uri.iswellFormedUrString应返回false 但是,它正在返回true(至少在.NETFramework 4.5中是这样)。我想知道将其视为格式良好的Uri字符串背后的逻辑。 还是一只虫子 提前谢谢 这不是一个bug。不验证uri的格式,因为文档中提到它与字符转义有关: 通过尝试使用该字符串构造URI来指示该字符串是否格式正确,确保该字符串不需要进一步转义 如果您想验证格式,
如果您想验证格式,可以使用方法。您可以阅读此=>
与名称
IsWellFormedUriString()
类似,它只检查格式良好的URIstring
,并且在一个字符串中使用HTTP 2次不会导致任何差异。来自文档
从.NET4.5开始,无论是否启用了IRI或IDN,根据RFC3986和RFC3987,字符串始终被视为格式良好
RFC 3986
和3987
从未说过路径不能包含
://
事实上,如果你向下滚动到文档中描述错误的备注部分
该字符串是路径前缺少斜杠的绝对URI
file://c:/directory/filename
这意味着
file:///c:/directory/filename
被视为RFC 3986和3987下的有效Uri。如果用http替换文件,它看起来确实是无效的Uri,但在标准下仍然有效 RFC 3986从未说过路径不能包含://请标记正确答案并对有用的帖子进行投票。它确实验证了格式。在4.5版之前的.NET版本中,默认情况下,根据RFC 2396和RFC 2732,字符串被认为格式良好。从.NET 4.5开始,根据RFC 3986和RFC 3987,无论是否启用IRI或IDN,字符串始终被视为格式良好。@Steve我读过,但我认为这不是验证格式。有效格式和格式良好在我看来是不同的。如果你说这是验证格式,那么为什么我不能创建这样的uri
http://http://helloworld
?