Asp.Net中的MapPath目录问题

最近因为要用.Net连接Access数据库,在数据库路径上遇到了麻烦。
找了半天,没搞懂.Net中的目录问题。

在古老的asp中,Server.MapPath无比好用,使用Server.MapPath可以很方便的返回物理路径的上一层;而在.Net中,返回的是虚拟路径的上一层,郁闷。

比如我们localhost的物理目录是“c:\inetpub\wwwroot\”,我们把“D:\mywebsite\test”设置为web共享, 在“D:\mywebsite\test”下的文件夹“NewFolder1”中,有文件“webform1.aspx”。

运行以下代码:
 Response.Write(Server.MapPath("") + "<br>");
 Response.Write(Server.MapPath("..") + "<br>");
 Response.Write(Server.MapPath("../") + "<br>");
 Response.Write(Server.MapPath("../../") + "<br>");

输出:
 D:\mywebsite\test\NewFolder1
 D:\mywebsite\test
 D:\mywebsite\test\
 c:\inetpub\wwwroot\
而在一个Asp文件“test.asp”中,有以下代码:
 <%
 response.write Server.MapPath("..") + "<br>"
 response.write Server.MapPath("../") + "<br>"
 response.write Server.MapPath("../../") + "<br>"
 %>
(需要说明的是,asp代码中response.write Server.MapPath("")会出现错误。)

输出:
 D:\mywebsite\test
 D:\mywebsite\test
 D:\mywebsite

正解。

所以,Asp.Net让人郁闷。
并且,不论Asp.Net还是Asp,用MapPath方法获得的物理路径,都与当前文件所处的目录有关,所以,在网站中处于不同目录深度的文件不能调用统一的方法获得access数据库的物理路径,实在是很郁闷的问题。

解决的办法,只好是将Access数据库的物理路径直接在配置文件中写好,这样可以不必使用MapPath方法,也不必受其限制。目前来看,虽然有点笨,但还是最好的方法。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章