Server.MapPath和HostingEnvironment.MapPath有什么区别?

Server.MapPath()HostingEnvironment.MapPath()有什么区别吗? Server.MapPath()HostingEnvironment.MapPath()有什么优势吗?

我原来的问题是当HttpContext不存在时,我不能将一个Servervariables从Global.asax传递给我的方法映射服务器上的文件path。

我使用HostingEnvironment.MapPath()因为它不需要HttpContext 。 这两种方法会有不同的结果吗?

Server.MapPath()最终调用HostingEnvironment.MapPath() ,但它创build一个具有特定选项的VirtualPath对象:

传递给HostingEnvironment.MapPath()VirtualPath对象是这样构造的:

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

编辑 :在现实中,唯一的区别是,您可以将null传递给Server.MapPath() ,但不传递给HostingEnvironment.MapPath()

Server.MapPath()需要一个HttpContextHostingEnvironment.MapPath不。