В чем разница между Server.MapPath и HostingEnvironment.MapPath?
Есть ли разница между Server.MapPath()
и HostingEnvironment.MapPath()
? Имеет ли Server.MapPath()
преимущества перед HostingEnvironment.MapPath()
?
Моя первоначальная проблема заключалась в сопоставлении пути к файлу на сервере, когда HttpContext
нет, и я не могу передать переменную Server
из Global.asax
в мой метод.
Я использовал HostingEnvironment.MapPath()
, потому что ему не нужно HttpContext
. Существуют ли ситуации, когда эти два метода будут давать разные результаты?
Ответы
Ответ 1
Server.MapPath()
в итоге вызывает HostingEnvironment.MapPath()
, но создает объект VirtualPath
с определенными параметрами:
Объект VirtualPath
, переданный в HostingEnvironment.MapPath()
, строится следующим образом:
VirtualPath.Create(path, VirtualPathOptions.AllowAllPath|VirtualPathOptions.AllowNull);
Изменить: на самом деле единственная разница в том, что вам разрешено передавать значение null до Server.MapPath()
, но не к HostingEnvironment.MapPath()
Ответ 2
Server.MapPath()
требуется HttpContext
. HostingEnvironment.MapPath
нет.