使用System.Uri删除多余的斜杠

Jef*_*f B 11 .net c# url

我在我的程序中有一个条件,我必须组合一个服务器(例如http://server1.my.corp/),可能有或没有结束斜杠与相对路径(例如/Apps/TestOne/).根据文件,Uri应该......

通过压缩序列(例如/./,/../,//,...)来规范化分层URI的路径

因此,当我做类似的事情时var url = new Uri(server + relativePath),我希望它采取原本会http://server1.my.corp//Apps/TestOne/删除双斜杠(即//- > /),但是ToString,AbsolutePath各种选项仍然显示冗余/重复斜杠.我没用Uri吗?

Sco*_*ott 18

看一下Uri类的构造函数.您需要指定基本Uri和相对路径以获取标准化行为.尝试这样的事情:

var server = new Uri("http://server1.my.corp/");
var resource = new Uri(server, "/Apps/TestOne/");
Run Code Online (Sandbox Code Playgroud)

  • 对于使用此构造函数重载的任何人,请注意:如果您的“服务器”URI 包含任何资源路径组件(例如“http://server1.my.corp/Apps/”),请小心。如果资源路径不以斜杠(“/”)结尾,则资源路径将被截断。请参阅“Uri(Uri, string)”构造函数[文档](https://learn.microsoft.com/en-us/dotnet/api/system.uri.-ctor#system-uri-ctor(系统-uri-系统-字符串))。 (2认同)