通常情況下,數據庫連接文件中的server.mappath()方法,可以正常獲得物理路徑,但是在瀏覽器中的連接被修改提交后,網頁的相對路徑就發生了變化,重而使得路徑報錯,報出數據庫信息.
ie特性,在瀏覽器中提交的連接地址中包含\瀏覽器會自動把 \ 轉換為 /,重而訪問到正確的連接地址。但是對于/小小的編碼轉換,就可避免ie的自動轉化 %5是\的十六進制編碼,當iis服務器收到用戶提交的信息并作出解析時,會將%5c還原成\于是在iis服務器中,用戶提交的網址的相對路徑就變成了"asp\test.asp"或"asp\conn.asp"...
網站服務器中,"相對路徑"就是指相對于Web根目錄的目錄路徑。例如D:\Web\在根目錄建立 一個名為asp的目錄,asp就是相對于D:\Web的一級子目錄。對應到網站連接上來看的話,D:\Web\對應的就是"http://localhost"而"asp"就是相對于“http://localhost”的一級目錄。因此,在web服務中訪問asp目錄是,只需要在瀏覽器中輸入相對路徑http://localhost/asp即可
所謂的絕對路徑就是在服務器磁盤 中的真實路徑,這里aso目錄的絕對路徑就是D :\Web\asp\是一個二級目錄
在iis中還有一個特殊的目錄路徑----'虛擬目錄".每個Web服務器可以重多個目錄發布,Web服務器可以有一個宿主目錄和任意數量的其他發布目錄,其他發布目錄就被成虛擬目錄,上面的例子Web服務的根目錄為D:\Web\通過iis虛擬目錄功能,可以發布一個論壇服務,論壇程序可以位于任意路徑,如在E:\bbs.通過iis虛擬目錄設置,人能把bbs轉化為Web目錄下,直接用http:..localhost/bbs/進行訪問。
使用虛擬目錄時,此目錄指向一個絕對地址的物理路徑。在iis中,在iis中,為了辨別當前訪問的是否問虛擬目錄,通常可以查詢每個目錄是否指向一個物理路徑,而進行查詢判斷時,是以連接中\作為符號標記的。也就是說,當iis獲取某個目錄時,如果碰到 \ 符號,則將? \ 之后的路徑作為目錄的絕對路徑,而忽略 \ 之前?????? 絕對路徑信息.
conn.asp數據庫連接文件中,Data Source=server.MapPath("ccf.mdb")
server.MapPath()方法的作用就是把相對路徑轉換為物理上的絕對路徑,進行數據讀寫。獲取數據庫文件的路徑時,讀取的路徑為Web根目錄+相對目錄+指定的路徑。