В чем разница между 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 нет.