Server.MapPath在Web-App子文件夹中不能返回正确的虚拟目录映射到物理路径。

4
我创建了一个网站,并将其映射到 D:\MyWebApp,在 Plugins 子目录中我创建了一个虚拟目录,并将其映射到 D:\Project\Presentation\Web\Accounting。 问题是当我想获取 http://localhost/Plugins/Accounting 的物理路径时,我得到了错误的结果。
无论是 Server.MapPath("~/Plugins/Accounting") 还是 Server.MapPath("/Plugins/Accounting") 都会返回 'D:\MyWebApp\Plugins\Accounting',而这个文件夹实际上不存在。我想要的是 D:\Project\Presentation\Web\Accounting。 我搜索了一下只找到了以下几行代码:
  1. Server.MapPath(".") 返回正在执行的文件(例如 aspx)所在的当前物理目录
  2. Server.MapPath("..") 返回父目录
  3. Server.MapPath("~") 返回应用程序根目录的物理路径
  4. Server.MapPath("/") 返回域名根目录的物理路径(不一定与应用程序根目录相同)
但在我的情况下(子文件夹中的虚拟目录),它不起作用!!! 我使用的是 IIS8、Asp.Net-Mvc 4 和 C#4。 如何获取它?
3个回答

2

试一试

删除“/plugin”

在请求http://localhost/Plugins/Accounting时,Server.MapPath("~/")方法会给出应用程序文件夹的路径。

Server.MapPath("~/Accounting/");//path to your Accounting folder

你想从 http://localhost/Plugins/Accounting 域或其他项目(如 MyWebApp)域获取 D:\Project\Presentation\Web\Accounting 路径吗? - sangram parmar
我想从localhost/Plugins/Accounting获取D:\Project\Presentation\Web\Accounting路径。 - Omid Shariati

0

使用这个,

Request.PhysicalApplicationPath + "Plugins\\Accounting\\

0
问题在于您有一个虚拟目录,它将重置 asp.net 认为是应用程序基本目录的位置。它真的需要在虚拟目录中吗?如果需要,您可以尝试检查 Request.ApplicationPath 来找到它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接