【问题标题】:Getting physical path of a virtual path获取虚拟路径的物理路径
【发布时间】:2015-06-30 18:58:37
【问题描述】:

我有一个文件夹来保存图像 C:\inetpub\wwwroot\Images\eZone\Albums\Album1。 我的 mvc 应用程序位于另一个文件夹 C:\inetpub\wwwroot\ezone 中。在 IIS 7 中,我创建了一个虚拟目录 images,它映射到 ezone 站点下的 C:\inetpub\wwwroot\images。当我运行我的 ezone 应用程序从专辑 1 加载图像时

DirectoryInfo di = new DirectoryInfo(Server.MapPath("/images/ezone/albums/album1"));

它返回不正确的“C:\inetput\wwwroot\ezone\images\ezone\albums\album1”。我错过了什么?

【问题讨论】:

  • 从 MapPath 字符串中去掉“ezone”似乎很奇怪。我希望返回值是“C:\inetpub\wwwroot\ezone\images\ezone\albums\album1”。注意第二个ezone
  • 另外,您的图像是否存在于网络应用文件夹之外?
  • 马克,实际上,出于安全原因,我们的管理员建议我们将图像文件夹放在单独的驱动器上。我试图看看我是否可以让它在同一个驱动器上工作。
  • 如果您不使用 Server.MapPath 而只使用 DirectoryInfo(fullPath) 会怎样。这行得通吗?
  • 它假定文件夹位于根目录 C:\ 所以我尝试从文件夹中检索文件的下一行代码会引发异常“找不到路径的一部分 'C:\Images\ ezone\albums\album1'."

标签: asp.net-mvc iis-7 server.mappath


【解决方案1】:

在你的路径前面加一个波浪号:

var di = new DirectoryInfo(Server.MapPath("~/images/ezone/albums/album1"));

欲了解更多信息,请查看ASP.NET MapPath resolves Virtual, Physical Paths

【讨论】:

  • 詹斯,我仍然得到相同的结果。
猜你喜欢
  • 2011-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-30
  • 2011-06-29
相关资源
最近更新 更多