繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM