一、路径
/ 念 反斜杠,/ 是超文本协议的路径分隔符号,所有的网站在浏览器中显示的路径分隔都是以"/"表示.它一般代表虚拟路径.
\ 念 斜杠,在普通程序代码中则以"\"表示文件路径分隔符号.它一般指物理路径.
./ 表示在当前路径下, .\作用相同
../表示在当前路径的上一级路径下. 如果当前网页直接在网站目录(你建立的asp.net项目)下,就不能使用它来得到外层的目录,否则提示:无法使用前导 .. 在顶级目录上退出。因为它已经是顶级目录了。当然如果是子目录下是可以使用的。
~/表示当前网站的根目录下.(你建立的asp.net项目)
我们得到的目录不能超出顶级网站的目录,只能是在网站下面的目录路径。
1、Server.MapPath("/") 应用程序根目录所在的位置 如 C:/Inetpub/wwwroot/
2、Server.MapPath("./") 表示所在页面的当前目录
注:等价于Server.MapPath("") 返回 Server.MapPath("") 所在页面的物理文件路径
3、Server.MapPath("../")表示上一级目录
4、Server.MapPath("~/")表示当前应用级程序的目录,如果是根目录,就是根目录,如果是虚拟目录,就是虚拟目录所在的位置 如 C:/Inetpub/wwwroot/Example/
二、Server.MapPath
Server.MapPath(string) :是将相对于当前调用文件的文件(或目录)映射为物理路径;
Server.MapPath(string) 中string 可以用“../”方式引用父目录,甚至可以将此目录跳到整个WEB目录外,如:C:/WWWROOT目录为WEB根目录,在根目录文件中调用此Server.MapPath("../xyz.gif"),则可以调用WEB目录外的脚本、资源等。
Server.MapPath("mydb.mdb").ToString() 是你的网页所在的文件夹再加上参数字符串,而不管这个参数字符串是什么,存在不存在 比如我在qiye子文件夹里放了一个/aspx文件,其中有这样一句:Response.Write(Server.MapPath("mydb.mdb").ToString());试验出来的值是:F:/fq /htdocs/qiye/mydb.mdb
另外,Server.MapPath("mydb.mdb").的参数的首部最好不要含有“/”,l因为这意味着根。 Response.Write(Server.MapPath("/mydb.mdb").ToString());试验出来的值是:c: /www_root
三、Request.MapPath
Request.MapPath(string) :是将string虚拟路径映射为物理路径(为当前请求将请求的URL中的虚拟路径映射到服务器上的物理路径。
Request.MapPath(string) 中的string为虚拟目录,只能相对WEB虚拟目录形式的,也不允许"../"方式调用,只能是"/","/xx"等字符串
四、优劣
有时候直接用Server.MapPath(string) 调用一个文件比较麻烦,因为不同的目录中调用同一个Server.MapPath(string) 函数就会得到不同的值,
特殊的话,就需要通过判断本身目录层次才能获取正确的地址,使用的Request.MapPath(string)就可以调用同一个目录文件。不用做目录判断