通常情況下察署,數(shù)據(jù)庫連接文件中的server.mappath()方法闷游,可以正常獲得物理路徑,但是在瀏覽器中的連接被修改提交后贴汪,網(wǎng)頁的相對路徑就發(fā)生了變化脐往,重而使得路徑報(bào)錯(cuò),報(bào)出數(shù)據(jù)庫信息.
ie特性扳埂,在瀏覽器中提交的連接地址中包含\瀏覽器會自動把 \ 轉(zhuǎn)換為 /业簿,重而訪問到正確的連接地址。但是對于/小小的編碼轉(zhuǎn)換阳懂,就可避免ie的自動轉(zhuǎn)化 %5是\的十六進(jìn)制編碼梅尤,當(dāng)iis服務(wù)器收到用戶提交的信息并作出解析時(shí),會將%5c還原成\于是在iis服務(wù)器中岩调,用戶提交的網(wǎng)址的相對路徑就變成了"asp\test.asp"或"asp\conn.asp"...
網(wǎng)站服務(wù)器中巷燥,"相對路徑"就是指相對于Web根目錄的目錄路徑。例如D:\Web\在根目錄建立 一個(gè)名為asp的目錄号枕,asp就是相對于D:\Web的一級子目錄缰揪。對應(yīng)到網(wǎng)站連接上來看的話,D:\Web\對應(yīng)的就是"http://localhost"而"asp"就是相對于“http://localhost”的一級目錄葱淳。因此钝腺,在web服務(wù)中訪問asp目錄是,只需要在瀏覽器中輸入相對路徑http://localhost/asp即可
所謂的絕對路徑就是在服務(wù)器磁盤 中的真實(shí)路徑赞厕,這里aso目錄的絕對路徑就是D :\Web\asp\是一個(gè)二級目錄
在iis中還有一個(gè)特殊的目錄路徑----'虛擬目錄".每個(gè)Web服務(wù)器可以重多個(gè)目錄發(fā)布艳狐,Web服務(wù)器可以有一個(gè)宿主目錄和任意數(shù)量的其他發(fā)布目錄,其他發(fā)布目錄就被成虛擬目錄坑傅,上面的例子Web服務(wù)的根目錄為D:\Web\通過iis虛擬目錄功能僵驰,可以發(fā)布一個(gè)論壇服務(wù),論壇程序可以位于任意路徑唁毒,如在E:\bbs.通過iis虛擬目錄設(shè)置,人能把bbs轉(zhuǎn)化為Web目錄下星爪,直接用http:..localhost/bbs/進(jìn)行訪問浆西。
使用虛擬目錄時(shí),此目錄指向一個(gè)絕對地址的物理路徑顽腾。在iis中近零,在iis中诺核,為了辨別當(dāng)前訪問的是否問虛擬目錄,通尘眯牛可以查詢每個(gè)目錄是否指向一個(gè)物理路徑窖杀,而進(jìn)行查詢判斷時(shí),是以連接中\(zhòng)作為符號標(biāo)記的裙士。也就是說入客,當(dāng)iis獲取某個(gè)目錄時(shí),如果碰到 \ 符號腿椎,則將? \ 之后的路徑作為目錄的絕對路徑桌硫,而忽略 \ 之前?????? 絕對路徑信息.
conn.asp數(shù)據(jù)庫連接文件中,Data Source=server.MapPath("ccf.mdb")
server.MapPath()方法的作用就是把相對路徑轉(zhuǎn)換為物理上的絕對路徑啃炸,進(jìn)行數(shù)據(jù)讀寫铆隘。獲取數(shù)據(jù)庫文件的路徑時(shí),讀取的路徑為Web根目錄+相對目錄+指定的路徑南用。