微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – Uri构造函数.NET Framework错误?

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

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处理有意义但是这对我来说仍然是错误的:

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是相对的,它也会失败

解决方法

文件uri方案(RFC 1738)file:// [host] / path显示主机是可选的. ///test.html意味着“由于这通常用于本地文件,因此RFC 1738中的主机通常为空,导致启动三元组/ . (ref)

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

希望这可以帮助.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐