Как я преобразовываю абсолютный или относительный путь URI (например. /foo/bar.txt
) к (segmentwise) соответствующему системному пути файла прямого доступа (например. foo\bar.txt
) в.NET?
Моя программа не является приложением ASP.NET.
Я придумал этот способ создания полного абсолютного пути к файловой системе из относительного или абсолютного URI и базового пути.
С:
Uri basePathUri = new Uri(@"C:\abc\");
Из относительного URI:
string filePath = new Uri(basePathUri, relativeUri).AbsolutePath;
Из абсолютного URI:
// baseUri is a URI used to derive a relative URI
Uri relativeUri = baseUri.MakeRelativeUri(absoluteUri);
string filePath = new Uri(basePathUri, relativeUri).AbsolutePath;
Вы уже пробовали Server.MapPath
?
или свойство Uri.LocalPath
? Примерно так:
string uriString = "file://server/filename.ext";
// Lesson learnt - always check for a valid URI
if(Uri.IsWellFormedUriString(uriString))
{
Uri uri = new Uri(uriString);
Console.WriteLine(uri.LocalPath);
}