Server.MapPath()
和HostingEnvironment.MapPath()
之间有什么区别吗? Server.MapPath()
比HostingEnvironment.MapPath()
有什么优势吗?
我原来的问题是在HttpContext
不存在时映射服务器上的文件路径,我无法将Server
变量从Global.asax
传递给我的方法。
我使用了HostingEnvironment.MapPath()
,因为它不需要HttpContext
。有这两种方法会产生不同结果的情况吗?
答案 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()
需要HttpContext
。 HostingEnvironment.MapPath
没有。