[英]What is the difference between Server.MapPath and HostingEnvironment.MapPath?
Server.MapPath()
和HostingEnvironment.MapPath()
之间有什么区别吗? Server.MapPath()
比HostingEnvironment.MapPath()
) 有什么优势吗?
我最初的问题是当HttpContext
不存在并且我无法将Server
变量从Global.asax
传递给我的方法时在服务器上映射文件路径。
我使用HostingEnvironment.MapPath()
代替,因为它不需要HttpContext
。 是否存在这两种方法会给出不同结果的情况?
Server.MapPath()
最终调用HostingEnvironment.MapPath()
,但它创建了一个具有特定选项的VirtualPath
对象:
传递给
HostingEnvironment.MapPath()
的VirtualPath
对象构造如下:VirtualPath.Create(path, VirtualPathOptions.AllowAllPath|VirtualPathOptions.AllowNull);
编辑 :实际上,唯一的区别是你可以将null传递给Server.MapPath()
,但不能传递给HostingEnvironment.MapPath()
Server.MapPath()
需要一个HttpContext
。 HostingEnvironment.MapPath
没有。
是否存在这两种方法会给出不同结果的情况?
在 WCF 服务中,由于null
HttpContext.Current
的原因,您无法通过Server.MapPath()
获取路径并会得到HttpException
,但您可以通过HostingEnvironment.MapPath()
获取路径。
// This will get a Http Exception
string path = System.Web.HttpContext.Current.Server.MapPath("myPath");
// This will get your path
string path = System.Web.HostingEnvironment.MapPath("~/myPath");
参考:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.