Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#Uri.IsWellFormedUriString-像这样传递值http://http://helloworld 返回true。这是设计还是一个bug?_C#_Uri - Fatal编程技术网

C#Uri.IsWellFormedUriString-像这样传递值http://http://helloworld 返回true。这是设计还是一个bug?

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来指示该字符串是否格式正确,确保该字符串不需要进一步转义 如果您想验证格式,

很抱歉,如果已经回答了这个问题(我搜索时找不到它),如果您传递了一个无效的URL值,如“”,则c#中的Uri.iswellFormedUrString应返回false

但是,它正在返回true(至少在.NETFramework 4.5中是这样)。我想知道将其视为格式良好的Uri字符串背后的逻辑。 还是一只虫子

提前谢谢

这不是一个bug。不验证uri的格式,因为文档中提到它与字符转义有关:

通过尝试使用该字符串构造URI来指示该字符串是否格式正确,确保该字符串不需要进一步转义


如果您想验证格式,可以使用方法。

您可以阅读此=>


与名称
IsWellFormedUriString()
类似,它只检查格式良好的URI
string
,并且在一个字符串中使用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