提问人:Manu 提问时间:11/9/2008 最后编辑:dav_iManu 更新时间:8/1/2023 访问量:519517
Server.MapPath(“.”), Server.MapPath(“~”), Server.MapPath(@“\”), Server.MapPath(“/”).有什么区别?
Server.MapPath("."), Server.MapPath("~"), Server.MapPath(@"\"), Server.MapPath("/"). What is the difference?
问:
谁能解释一下 , , 和 之间的区别?Server.MapPath(".")
Server.MapPath("~")
Server.MapPath(@"\")
Server.MapPath("/")
答:
Server.MapPath 指定要映射到物理目录的相对路径或虚拟路径。
Server.MapPath(".")
1 返回正在执行的文件(例如 .aspx)的当前物理目录Server.MapPath("..")
返回父目录Server.MapPath("~")
返回应用程序根目录的物理路径Server.MapPath("/")
返回域名根目录的物理路径(不一定与应用程序的根目录相同)
举个例子:
假设您将网站应用程序 () 指向http://www.example.com/
C:\Inetpub\wwwroot
并安装了您的商店应用程序(子 web 作为 IIS 中的虚拟目录,标记为应用程序)
D:\WebApps\shop
例如,如果调用以下请求:Server.MapPath()
http://www.example.com/shop/products/GetProduct.aspx?id=2342
然后:
Server.MapPath(".")
1 返回D:\WebApps\shop\products
Server.MapPath("..")
返回D:\WebApps\shop
Server.MapPath("~")
返回D:\WebApps\shop
Server.MapPath("/")
返回C:\Inetpub\wwwroot
Server.MapPath("/shop")
返回D:\WebApps\shop
如果 Path 以正斜杠 () 或反斜杠 () 开头,则返回一个路径,就好像 Path 是一个完整的虚拟路径一样。/
\
MapPath()
如果 Path 不以斜杠开头,则返回相对于正在处理的请求的目录的路径。MapPath()
注意:在 C# 中,@
是逐字文字字符串运算符,这意味着字符串应“按原样”使用,而不是用于转义序列。
脚注
Server.MapPath(null)
并且也会产生这种效果。Server.MapPath("")
评论
HostingEnvironment.MapPath
HttpContext
只是为了稍微扩展一下@splattne的答案:
MapPath(string virtualPath)
调用以下命令:
public string MapPath(string virtualPath)
{
return this.MapPath(VirtualPath.CreateAllowNull(virtualPath));
}
MapPath(VirtualPath virtualPath)
反过来调用包含以下内容的调用:MapPath(VirtualPath virtualPath, VirtualPath baseVirtualDir, bool allowCrossAppMapping)
//...
if (virtualPath == null)
{
virtualPath = VirtualPath.Create(".");
}
//...
因此,如果您调用 或 ,则实际上是在调用MapPath(null)
MapPath("")
MapPath(".")
1) -- 返回正在执行的文件(例如)的“当前物理目录”。Server.MapPath(".")
aspx
例如,假设D:\WebApplications\Collage\Departments
2) -- 返回“父目录”Server.MapPath("..")
前任。D:\WebApplications\Collage
3) -- 返回“应用程序根目录的物理路径”Server.MapPath("~")
前任。D:\WebApplications\Collage
4) -- 返回域名根目录的物理路径Server.MapPath("/")
前任。C:\Inetpub\wwwroot
工作示例,希望这有助于展示一种使用MapPath的方法,而不仅仅是“/”。我们将“/”和“~”组合在一起。
- 字符串 lotMapsUrl = “~/WebFS/Transport/Maps/Lots/”;---只需获得 将 URL 转换为变量
- 字符串 lotMapsDir = Server.MapPath(lotMapsUrl);---得到我们完整的 到此位置的物理路径
- string[] files = Directory.GetFiles(lotMapsUrl);---去拿一个清单 物理路径中的文件。
评论