假如现在在D盘下有如下文件(夹)结构:
wwwroot
include
conn.asp
database
data.mdb
article
artilelist.asp
index.asp
如果conn.asp中取数据库中路径的写法为:Server.MapPath("database\data.mdb")
1、当你在 index.asp 中,得到的数据库的绝对地址为:
d:\wwwroot\database\data.mdb
因为 index.asp 所在的绝对路径为:d:\wwwroot\,Server.MapPath("database\data.mdb")取得以此为相对路径下的\database\data.mdb文件,这样在 index.asp 中取得的数据库路径正确,程序可以正常运行
2、当在 artilelist.asp 中,得到的数据库的绝对地址为:
d:\wwwroot\article\database\data.mdb
因为 artilelist.asp 所在的绝对路径为:d:\wwwroot\article,Server.MapPath("database\data.mdb")就是返回以d:\wwwroot\article为相对路径的文件夹的 \database\data.mdb 文件,而 article 文件夹下并无此文件,程序自然不能正确执行
如果conn.asp中取数据库中路径的写法为:Server.MapPath("\")& "\database\data.mdb",就能避免这种情况:
首先通过Server.MapPath("\")取得的是你网站根目录的绝对地址,再以此地址为相对地址下的 "\database\data.mdb"文件,这样无论文件夹的层次怎么变化,返回的数据库路径始终是:
d:\wwwroot\database\data.mdb
另外:
如果在调试程序中出现数据库路径错误,建议用
response.write(取数据库路径的表达式)
如:response.write(Server.MapPath("\")& "\database\data.mdb")
看看输出的结果,自然就明白错在什么地方了!
阅读(1648) | 评论(1) | 转发(0) |