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

时间:2009-06-03 11:28:05

标签: c# asp.net

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

我原来的问题是在HttpContext不存在时映射服务器上的文件路径,我无法将Server变量从Global.asax传递给我的方法。

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

2 个答案:

答案 0 :(得分:197)

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

  

传递给VirtualPath的{​​{1}}对象构造如下:

HostingEnvironment.MapPath()

编辑 :实际上,唯一的区别是您可以将null传递给VirtualPath.Create(path, VirtualPathOptions.AllowAllPath|VirtualPathOptions.AllowNull); ,但不能传递给Server.MapPath() }

答案 1 :(得分:108)

Server.MapPath()需要HttpContextHostingEnvironment.MapPath没有。