Подтвердить что ты не робот

Как разрешить путь относительно корня приложения ASP.NET MVC 4?

Как мне разрешить пути относительно корневого каталога приложения ASP.NET MVC 4? То есть, я хочу открыть файлы, принадлежащие приложению, из действий контроллера, на которые ссылаются, как ~/Data/data.html. Эти пути обычно указаны в Web.config.

EDIT:

"Разрешить" Я хочу преобразовать путь относительно корневого каталога приложения в абсолютный путь, например. ~/Data/data.htmlC:\App\Data\Data.html.

4b9b3361

Ответ 1

Чтобы получить абсолютный путь, используйте это:

String path = HttpContext.Current.Server.MapPath("~/Data/data.html");

ИЗМЕНИТЬ:

Чтобы получить Контекст Controller, удалите .Current из приведенной выше строки. Используя HttpContext сам по себе, легче тестировать, потому что на основе контекста контроллера более локализован.

Теперь я понимаю, что мне не нравится, как работает Server.MapPath (внутренне в итоге вызывает HostingEnvironment.MapPath). Поэтому я рекомендую всегда использовать HostingEnvironment.MapPath, потому что он статичен и не зависит от контекста, если, конечно, вы этого не хотите...

Ответ 2

Я нахожу этот код полезным, когда мне нужен путь вне контроллера, например, когда я инициализирую компоненты в Global.asax.cs:

HostingEnvironment.MapPath("~/Data/data.html")

Ответ 3

Просто используйте следующие

Server.MapPath("~/Data/data.html")

Ответ 4

В действии вы можете позвонить:

this.Request.PhysicalPath

который возвращает физический путь в отношении текущего контроллера. Если вам нужен только корневой путь:

this.Request.PhysicalApplicationPath