【问题标题】:What is the difference between Server.MapPath and HostingEnvironment.MapPath?Server.MapPath 和 HostingEnvironment.MapPath 有什么区别?
【发布时间】:2010-10-30 23:05:25
【问题描述】:

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

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

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

【问题讨论】:

标签: c# asp.net


【解决方案1】:

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

传递给HostingEnvironment.MapPath()VirtualPath 对象的构造如下:

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

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

【讨论】:

  • 所以我总是会从两种方法中得到相同的结果,对吧? (不包括空参数)
  • TL;DR:始终使用HostingEnvironment.MapPath() 保持理智。 (+1)
  • 除了 null 之外肯定有什么不同,因为 Server.MapPath("myFolder") 工作正常,但要使用 HostingEnvironment 获得相同的结果,我必须使用 HostingEnvironment.MapPath("~/myFolder")
  • 通过调用 Web 服务启动 ftp 会话的绝佳答案。今天救了我很多!!!
  • 其实还有一个区别——HostingEnvironment.MapPath 不允许使用相对路径(例如 Image/pict.png)。
【解决方案2】:

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

【讨论】:

  • 但两者都需要System.Web,所以它们可以与自托管 OWIN 环境一起使用吗?
猜你喜欢
  • 2010-09-21
  • 2010-10-02
  • 2011-12-12
  • 2010-09-16
  • 2012-03-14
  • 2012-02-06
  • 2011-02-25
  • 2011-11-22
  • 2015-03-26
相关资源
最近更新 更多