Server.MapPath和Request.MapPath()的用法
來源:互聯網
上載者:User
Server.MapPath和Request.MapPath()的用法./目前的目錄
/根目錄
../上層目錄(相對當前來說)
如果當前的網站目錄為D:\wwwroot 瀏覽的頁面路徑為D:\wwwroot\company\news\show.asp
在show.asp頁面中使用
Server.MapPath("./") 返迴路徑為:D:\wwwroot\company\news
Server.MapPath("/") 返迴路徑為:D:\wwwroot
Server.MapPath("../") 返迴路徑為:D:\wwwroot\company
server.MapPath(request.ServerVariables("Path_Info"))
Request.ServerVariables("Path_Translated")
上面兩種方式返迴路徑為 D:\wwwroot\company\news\show.asp
ASP.NET中Server.MapPath() 和 Request.MapPath()區別:
Server.MapPath(string) :是將相對於當前調用檔案的檔案(或目錄)映射為實體路徑;
Request.MapPath(string) :是將string虛擬路徑映射為實體路徑(asp中Request無此方法)
Server.MapPath(string) 中string 可以用“../”方式引用父目錄,甚至可以將此目錄跳到整個WEB目錄外,如:C:\WWWROOT
目錄為WEB根目錄,在根目錄檔案中調用此Server.MapPath("../xyz.gif"),則可以調用WEB目錄外的指令碼、資源等。
Request.MapPath(string) 中的string為虛擬目錄,只能相對WEB虛擬目錄形式的,也不允許"../"方式調用,只能是"/","/xx"等字串
有時候直接用Server.MapPath(string) 調用一個檔案比較麻煩,因為不同的目錄中調用同一個Server.MapPath(string) 函數就會得到不同的值,
特殊的話,就需要通過判斷本身目錄層次才能擷取正確的地址,使用的Request.MapPath(string)就可以調用同一個目錄檔案。不用做目錄判斷