Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.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
.net 从绝对uri获取相对uri_.net - Fatal编程技术网

.net 从绝对uri获取相对uri

.net 从绝对uri获取相对uri,.net,.net,我有一个System.Uri,例如 var uri = new Uri("http://www.domain.com/foo/bar"); 如何仅从中获取相对Uri: /foo/bar 你要找的是非此即彼。PathAndQuery将包括querystring(您的问题中没有),而AbsolutePath将只提供路径 Console.WriteLine(uri.PathAndQuery); // or Console.WriteLine(uri.AbsolutePath); …为这两个输出

我有一个System.Uri,例如

var uri = new Uri("http://www.domain.com/foo/bar");
如何仅从中获取相对Uri:

/foo/bar

你要找的是非此即彼。PathAndQuery将包括querystring(您的问题中没有),而AbsolutePath将只提供路径

Console.WriteLine(uri.PathAndQuery);
// or 
Console.WriteLine(uri.AbsolutePath);
…为这两个输出以下结果

/foo/bar


反过来说,就是从相对路径获取绝对URI:-

1.获取所需的目录。 只需在目录中添加\即可,例如for @“c:\someDirectory\something\something\foo\bar”

如果Directory.GetCurrentDirectory给出@“c:\someDirectory”,则执行以下操作:-

Uri uri = new Uri(Directory.GetCurrentDirectory() + 
          @"\something\something\" + relative_path);
 DirectoryInfo directory = 
     Directory.GetParent(Directory.GetCurrentDirectory()).Parent;

Uri uri = new Uri(Directory.GetCurrentDirectory() + 
          "\\something\\something\\" + relative_path);
如果没有@符号,则必须使用另一个\字符转义\字符,以便将其读取为字符串

若要更进一步,请获取当前目录并使用 方法获取DirectoryInfo并继续使用 父属性将继续前进一步,例如 someDirectory\foo\bar

Uri uri = new Uri(Directory.GetCurrentDirectory() + 
          "\\something\\something\\" + relative_path);
如果Directory.GetCurrentDirectory提供 @“c:\someDirectory\somthing\something”然后执行以下操作:-

Uri uri = new Uri(Directory.GetCurrentDirectory() + 
          @"\something\something\" + relative_path);
 DirectoryInfo directory = 
     Directory.GetParent(Directory.GetCurrentDirectory()).Parent;
GetParent向上一步并返回一个DirectoryInfo对象 现在,您可以继续使用Parent属性,以使其在运行时继续上升 每次都能得到一个目录信息。所以我将文件结构向上移动 两次

directory.FullName的类型为string,它是您选择的绝对路径 如果需要,将其连接到相对路径并生成新的Uri。
因此,这是一个倒退的解决方法。

PathAndQuery
不带片段,例如“”将只为您提供
/q?x=y