Абсолютный путь назад к веб-пути

Если мне удалось найти и проверить наличие файла с помощью Server.MapPath, и теперь я хочу отправить пользователя непосредственно в этот файл, что является самым быстрым способом конвертировать этот абсолютный путь обратно в относительный веб-путь?

Возможно, это может сработать:

String RelativePath = AbsolutePath.Replace(Request.ServerVariables["APPL_PHYSICAL_PATH"], String.Empty); 

Я использую c #, но может быть адаптирован к vb.

Было бы неплохо иметь Server.RelativePath (путь) ?

ну, вам просто нужно его продлить 😉

 public static class ExtensionMethods { public static string RelativePath(this HttpServerUtility srv, string path, HttpRequest context) { return path.Replace(context.ServerVariables["APPL_PHYSICAL_PATH"], "~/").Replace(@"\", "/"); } } 

С этим вы можете просто позвонить

 Server.RelativePath(path, Request); 

Я знаю, что это старо, но мне нужно было учитывать виртуальные каталоги (за комментарий @ Costo). Это, по-видимому, помогает:

 static string RelativeFromAbsolutePath(string path) { if(HttpContext.Current != null) { var request = HttpContext.Current.Request; var applicationPath = request.PhysicalApplicationPath; var virtualDir = request.ApplicationPath; virtualDir = virtualDir == "/" ? virtualDir : (virtualDir + "/"); return path.Replace(applicationPath, virtualDir).Replace(@"\", "/"); } throw new InvalidOperationException("We can only map an absolute back to a relative path if an HttpContext is available."); } 

Мне нравится идея от Каноа. К сожалению, у меня не было доступного «HttpContext.Current.Request» (BundleConfig.cs).

Я изменил этот метод следующим образом:

 public static string RelativePath(this HttpServerUtility srv, string path) { return path.Replace(HttpContext.Current.Server.MapPath("~/"), "~/").Replace(@"\", "/"); } 

Если вы использовали Server.MapPath, то у вас уже должен быть относительный веб-путь. Согласно документации MSDN , этот метод принимает одну переменную, путь , являющийся виртуальным путем веб-сервера. Поэтому, если вы смогли вызвать метод, у вас уже должен быть ansible относительный веб-путь.

  • Как создать несколько путей вывода в конфигурации Webpack
  • Команда bash / fish для печати абсолютного пути к файлу
  • Windows 7 - Добавить путь
  • Как добавить включить путь в Qt Creator?
  • Как получить путь к папке из пути к файлу с помощью CMD
  • Надежный способ для сценария bash получить полный путь к самому себе?
  • абсолютный путь res.sendFile
  • slash (/) vs tilde slash (~ /) в пути листа стилей в asp.net
  • C #, путь к% AppData%
  • Кордова не может добавить Android с кодом выхода ENOENT
  • Абсолютный путь и относительный путь
  • Interesting Posts

    Select2, но разрешить новые значения пользователем?

    Манифест Java-апплета – разрешить все возможности Caller-Allowable-Codebase

    Как многократно запускать тест с данными, считываемыми из CSV-файла (передача данных)

    Заменить динамический контент в XML-файле

    Как я могу постоянно указывать Windows7 по умолчанию мои пользовательские данные, такие как библиотеки, кроме загрузочного диска?

    Учитывая массив, узнайте следующий меньший элемент для каждого элемента

    Мой компьютер зависает нерегулярно

    Есть ли в Windows 10 ISO файл EI.CFG для изменения версии?

    Добавление внешней библиотеки в банку артефактов в IntelliJ IDEA

    Как я могу настроить SmartScreen Filter на самозаверяющий сертификат

    Приобретать / выпускать семантику с невременными магазинами на x64

    Используйте веб-страницу в качестве Заставки (Linux)

    Поддерживает ли Entity Framework параллельные асинхронные запросы?

    LINQ в .NET 2.0 Runtime

    Поощрять JVM к GC, а не вырастить кучу?

    Давайте будем гением компьютера.