Answers:
Server.MapPath指定要映射到物理目录的相对或虚拟路径。
Server.MapPath(".")1返回正在执行的文件的当前物理目录(例如,aspx)Server.MapPath("..") 返回父目录Server.MapPath("~") 返回到应用程序根目录的物理路径Server.MapPath("/") 返回到域名根的物理路径(不一定与应用程序的根相同)一个例子:
假设您将网站应用程序(http://www.example.com/)指向了
C:\Inetpub\wwwroot
并在以下位置安装了商店应用程序(IIS中的子网站为虚拟目录,标记为应用程序)
D:\WebApps\shop
例如,如果您调用Server.MapPath()以下请求:
http://www.example.com/shop/products/GetProduct.aspx?id=2342
然后:
Server.MapPath(".")1个退货D:\WebApps\shop\productsServer.MapPath("..") 退货 D:\WebApps\shopServer.MapPath("~") 退货 D:\WebApps\shopServer.MapPath("/") 退货 C:\Inetpub\wwwrootServer.MapPath("/shop") 退货 D:\WebApps\shop如果Path以正斜杠(/)或反斜杠(\)开头,则MapPath()返回路径,就好像Path是完整的虚拟路径一样。
如果Path不以斜杠开头,则MapPath()返回相对于正在处理的请求目录的路径。
注意:在C#中,@是逐字文字字符串运算符,表示该字符串应“按原样”使用,而不对转义序列进行处理。
脚注
Server.MapPath(null)并且Server.MapPath("")也会产生这种效果。只是为了扩展@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