Uri.MakeRelativeUri 错误处理../
Uri.MakeRelativeUri incorrectly handling ../
我在使用 MakeRelativeUri 时得到的路径不正确。现在这可能是 Unity 和 mono 的问题,或者希望我只是用错了它,或者 .net 中实际上存在错误。您将不得不原谅详细的示例,但这就是我所拥有的。
System.Uri fileURI = new System.Uri( "/Home/Folder1/Folder2/Folder3/Folder4/Folder5/Folder6/../../../../Folder7/Folder8/file.png" );
System.Uri rootURI = new System.Uri( "/Home/Folder1/Folder2/Folder3/../FolderA/." );
result = rootURI.MakeRelativeUri( fileURI ).ToString();
本例中的结果是 ../../Folder4/Folder5/Folder6/../../../../Folder7/Folder8/file.png
但应该是
../Folder3/Folder4/Folder5/Folder6/../../../../Folder7/Folder8/file.png
它似乎将根路径中的../ 视为目录而不是返回目录的指令。任何人都可以确认是否是这样吗?
我通过 Path.GetFullPath()
传递路径字符串,然后再将它们传递到 Uri
构造函数来解决这个问题。这会正确地去除 ../ 然后它会按您预期的那样工作。
我在使用 MakeRelativeUri 时得到的路径不正确。现在这可能是 Unity 和 mono 的问题,或者希望我只是用错了它,或者 .net 中实际上存在错误。您将不得不原谅详细的示例,但这就是我所拥有的。
System.Uri fileURI = new System.Uri( "/Home/Folder1/Folder2/Folder3/Folder4/Folder5/Folder6/../../../../Folder7/Folder8/file.png" );
System.Uri rootURI = new System.Uri( "/Home/Folder1/Folder2/Folder3/../FolderA/." );
result = rootURI.MakeRelativeUri( fileURI ).ToString();
本例中的结果是 ../../Folder4/Folder5/Folder6/../../../../Folder7/Folder8/file.png
但应该是
../Folder3/Folder4/Folder5/Folder6/../../../../Folder7/Folder8/file.png
它似乎将根路径中的../ 视为目录而不是返回目录的指令。任何人都可以确认是否是这样吗?
我通过 Path.GetFullPath()
传递路径字符串,然后再将它们传递到 Uri
构造函数来解决这个问题。这会正确地去除 ../ 然后它会按您预期的那样工作。