標籤:

Server.MapPath()

1.Server.MapPath()介紹

Server.MapPath(string path)作用是返回與Web伺服器上的指定虛擬路徑相對應的物理文件路徑。其參數path為Web伺服器的虛擬路徑,返回結果是與path相對應的物理文件路徑。但有時參數並非為虛擬路徑,而是用戶自定義的文件名。

Server.MapPath()的全名是System.Web.HttpContext.Current.Server.MapPath()。有時在程序調試時會提示「當前上下文中不存在名稱「Server」」錯誤,從而不支持函數Server.MapPath()的使用。儘管引用了命名空間「using System.Web;」也是無濟於事,此時就需要使用其全名,或者是當前使用Server.MapPath()函數的類繼承自System.Web.UI.Page。

2.Server.MapPath()應用

Server.MapPath(""):返回當前頁面所在的物理文件路徑

Server.MapPath("/"):返回應用程序根目錄所在的物理文件路徑

Server.MapPath("./"):返回當前頁面所在的物理文件路徑

Server.MapPath("../"):返回當前頁面所在的上一級的物理文件路徑

Server.MapPath("~/"):返回應用程序的虛擬目錄(路徑)

Server.MapPath("~"):返回應用程序的虛擬目錄(路徑)

./當前目錄/網站主目錄../上層目錄~/網站虛擬目錄如果當前的網站目錄為E:wwwroot應用程序虛擬目錄為E:wwwrootcompany瀏覽的頁面路徑為E:wwwrootcompany
ewsshow.asp在show.asp頁面中使用Server.MapPath("./")返迴路徑為:E:wwwrootcompany
ewsServer.MapPath("/")返迴路徑為:E:wwwrootServer.MapPath("../")返迴路徑為:E:wwwrootcompanyServer.MapPath("~/") 返迴路徑為:E:wwwrootcompanyserver.MapPath(request.ServerVariables("Path_Info"))Request.ServerVariables("Path_Translated")上面兩種方式返迴路徑為D:wwwrootcompany
ewsshow.asp

1、Server.MapPath("/") 應用程序根目錄所在的位置 如 C:Inetpubwwwroot 2、Server.MapPath("./") 表示所在頁面的當前目錄 註:等價於Server.MapPath("") 返回 Server.MapPath("") 所在頁面的物理文件路徑 3、Server.MapPath("../")表示上一級目錄 4、Server.MapPath("~/")表示當前應用級程序的目錄,如果是根目錄,就是根目錄,如果是虛擬目錄,就是虛擬目錄所在的位置 如 C:InetpubwwwrootExample

Response.Write(Request.PhysicalApplicationPath.ToString());Response.Write(Server.MapPath("mydb.mdb").ToString());

經過實驗,我發現:Request.PhysicalApplicationPath.ToString()是你的網站所在的目錄 ,比如我的就是F:fqhtdocs,而這個地址不管你的網頁在哪個子文件夾里,都是一樣的。

Server.MapPath("mydb.mdb").ToString() 是你的網頁所在的文件夾再加上參數字元串,而不管這個參數字元串是什麼,存在不存在 比如我在qiye子文件夾里放了一個1/aspx文件,其中有這樣一句:Response.Write(Server.MapPath("mydb.mdb").ToString());試驗出來的值是:F:fqhtdocsqiyemydb.mdb

另外,Server.MapPath("mydb.mdb").的參數的首部最好不要含有「/」,l因為這意味著根。Response.Write(Server.MapPath("/mydb.mdb").ToString());試驗出來的值是:c:/www_root

ASP.NET中Server.MapPath() 和 Request.MapPath()

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) 函數就會得到不同的值(我今天就在這裡災了

,最好看到octverve文章,明白)特殊的話,就需要通過判斷本身目錄層次才能獲取正確的地址,使用的Request.MapPath(string)就可以調用同一個目錄文件。不用做目錄判斷

推薦閱讀:

Path 已經改成了「雙向好友關係分享」了,為什麼 Google+ 還在做單向好友關係分享?這種做法的優缺點何在?
Path for iOS 的用戶如何讓 Share 給自己的人閃退?
Path 和 Color,誰在幾年後更成功?
你對 Path 2.0 的評價是什麼?
為什麼在 path.com 上找不到直接的登陸入口?只有直接輸 path.com/login 才可以?

TAG:Path |