首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Uri构造器.NET框架Bug?

Uri构造器.NET框架Bug?
EN

Stack Overflow用户
提问于 2011-11-13 12:37:52
回答 4查看 1.1K关注 0票数 3

为什么thirdRelativeUri失败了?这是一个.NET错误吗?在4.0中似乎也没有固定。

代码语言:javascript
运行
复制
var googleU = new Uri("http://www.google.com");
var secondRelativeUri = new Uri(googleU,"//test.htm"); // doesn't fail
var thirdRelativeUri = new Uri(googleU,"///test.htm"); // fails - Invalid URI: The hostname could not be parsed.

更新:

@dariom指出,这是因为在.NET中进行协议相对URL处理是有意义的,但在我看来,这似乎仍然是个小问题:

代码语言:javascript
运行
复制
var thirdRelativeUri = new Uri("///test.htm",UriKind.Relative); // works as expected
var newUri = new Uri(googleU,thirdRelativeUri); //Fails, same error even though it's a relative URI

即使第二个Uri是Relative,它也会失败。

EN

回答 4

Stack Overflow用户

发布于 2011-11-13 13:06:13

文件uri方案(RFC 1738) file://host/path显示主机是可选的。/test.html意味着“由于通常用于本地文件,因此RFC 1738的主机通常是空的,从而导致启动三重/. (ref)”。

file:///test.htm /test.htm改为,URI构造函数将正确地解析它。AbsolutePath将是/test.html。

希望这能有所帮助。

票数 5
EN

Stack Overflow用户

发布于 2011-11-13 13:00:10

我认为构造函数正在将"//test.htm"解释为没有方案和test.htm主机名的URI。您可以通过检查"http://test.htm/".的secondRelativeUri值来看到这一点

您正在创建的第三个URI无效,因为您有太多的斜杠。

票数 2
EN

Stack Overflow用户

发布于 2011-11-13 13:51:11

新Uri(googleU,"//test.htm")意味着Uri = http://test.html/ /*有效,无论如何,在某个*/

新Uri(googleU,“/test.htm”)意味着Uri = http:///test.html/ /*无效,无意义*/

新Uri (“//test.htm”,UriKind.Relative);//=> Uri=/test.htm相同,而不是相对位置

var r=新Uri("test.htm",UriKind.Relative);

新Uri(googleU,r);// => Uri = http://www.google.com/test.htm

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8111566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档