В чем разница между сервером.MapPath и HostingEnvironment.MapPath?

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

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

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

2 ответов


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

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

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

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


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