В чем разница между Server.MapPath и HostingEnvironment.MapPath? - PullRequest
163 голосов
/ 03 июня 2009

Есть ли разница между Server.MapPath() и HostingEnvironment.MapPath()? Есть ли у Server.MapPath() какие-либо преимущества перед HostingEnvironment.MapPath()?

Первоначальной проблемой было сопоставление пути к файлу на сервере, когда HttpContext отсутствует, и я не могу передать переменную Server из Global.asax в мой метод.

Я использовал HostingEnvironment.MapPath() вместо этого, так как ему не нужно HttpContext. Есть ли ситуации, когда эти два метода будут давать разные результаты?

Ответы [ 2 ]

197 голосов
/ 03 июня 2009

Server.MapPath() в конечном итоге вызывает HostingEnvironment.MapPath(), но создает объект VirtualPath с конкретными параметрами:

Объект VirtualPath, переданный в HostingEnvironment.MapPath(), построен следующим образом:

VirtualPath.Create(path, VirtualPathOptions.AllowAllPath|VirtualPathOptions.AllowNull);

Редактировать : на самом деле единственное отличие состоит в том, что вам разрешено передавать ноль в Server.MapPath(), но не в HostingEnvironment.MapPath()

108 голосов
/ 03 июня 2009

Server.MapPath() требует HttpContext. HostingEnvironment.MapPath нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...