获得本机的绝对路径,server.mappath()的详细解析

关键字: 绝对路径 mappath

转自:http://www.cnblogs.com/lanshh/archive/2007/09/17/438826.html

作者:晓岚

用法:
1.Server.MapPath ("/")  应用程序根目录所在的位置 如 C:/Inetpub/wwwroot/
2.Server.MapPath ("./")  表示所在页面的当前目录
    注:等价于Server.MapPath ("")  返回 Server.MapPath ("")所在页面的物理文件路径
3.Server.MapPath ("../")表示上一级目录
4.Server.MapPath ("~/")表示当前应用级程序的目录,如果是根目录,就是根目录,如果是虚拟目录,就是虚拟目录所在的位置 如:C:/Inetpub/wwwroot/Example/
注:等效于Server.MapPath ("~")。

不知道是否正确,研究中......
另:以下几句等效

Java代码
  1. string filename=Server.MapPath ( "./" ) + @ "/Web.config" ;  
  2. string filename=Server.MapPath ("./" ) +  "/Web.config" ;  
  3. string filename=Server.MapPath ("" ) + @ "/Web.config"   
string filename=Server.MapPath
("./") + @"/Web.config";
string filename=Server.MapPath
("./") + "/Web.config";
string filename=Server.MapPath
("") + @"/Web.config"

 

附一例子:修改web.config的某一节点的属性值

Java代码
  1. public   void  write()  
  2.         {  
  3.             string key1 = this .TextBox1.Text;  
  4.             DataSet ds = new  DataSet();  
  5.             ds.ReadXml(Server.MapPath ("" )+ "/web.config" );  
  6.             // 不是Tables[0]   
  7.             ds.Tables[1 ].Rows[ 0 ][ 1 ] = key1;  
  8.             ds.AcceptChanges();  
  9.             ds.WriteXml(Server.MapPath ("" )+ "/web.config" );  
  10.             ds.Dispose();  
  11.               
  12.         }  
public void write()
        {
            string key1 = this.TextBox1.Text;
            DataSet ds = new DataSet();
            ds.ReadXml(Server.MapPath
("")+"/web.config");
            // 不是Tables[0]
            ds.Tables[1].Rows[0][1] = key1;
            ds.AcceptChanges();
            ds.WriteXml(Server.MapPath
("")+"/web.config");
            ds.Dispose();
            
        }

 

转自:http://blog.tianya.cn/blogger/post_show.asp?BlogID=284576&PostID=3517248

作者:山谷银月

string Server.MapPath (string path)
返回与Web服务器上的指定虚拟路径相对应的物理文件路径。



Html代码
  1. < %=Server.MapPath (Request.ServerVariables["PATH_INFO"])% >   
  2.   
  3. < %= Server.MapPath ("/")% >   
  4. < %= Server.MapPath ("")% >   
  5. < %=Server.MapPath (".")% >   
  6.   
  7. < %= Server.MapPath ("../")% >   
  8. < %= Server.MapPath ("..")% >   
<%=Server.MapPath
(Request.ServerVariables["PATH_INFO"])%>

<%= Server.MapPath
("/")%>
<%= Server.MapPath
("")%>
<%=Server.MapPath
(".")%>

<%= Server.MapPath
("../")%>
<%= Server.MapPath
("..")%>

 
以上的代码在http://localhost/EnglishClub/manage/WebForm1.aspx页面
运行结果:

C:/Inetpub/wwwroot/EnglishClub/manage/WebForm1.aspx

C:/Inetpub/wwwroot/
C:/Inetpub/wwwroot/EnglishClub/manage
C:/Inetpub/wwwroot/EnglishClub/manage

C:/Inetpub/wwwroot/EnglishClub/
C:/Inetpub/wwwroot/EnglishClub

----------------------------------------------------------------------------------------------

转自:http://hi.baidu.com/zls520/blog/item/f05df2caeb0a9145f31fe710.html

作者:zls3060420

很多的朋友一而再,再而三的在Server.Mappath 上卡壳,cnbruce也是一遍两遍地重复,还是不能全部解决,所以通过下面的举例,希望更多的朋友能恍然大悟,透彻明白过来。

先看图:

如图片显示不完整请点击查看

1,首先在本机E盘 下面建立red文件夹 ,夹子内继续建立conn.asp文件 ,文件内容如下:

Html代码
  1. < %=Server.Mappath ("database/cnbruce.mdb")% >   
  2. < %=Server.Mappath ("/database/cnbruce.mdb")% >   
  3. < %=Server.Mappath ("../database/cnbruce.mdb")% >   
<%=Server.Mappath
("database/cnbruce.mdb")%>
<%=Server.Mappath
("/database/cnbruce.mdb")%>
<%=Server.Mappath
("../database/cnbruce.mdb")%>

 
主要调试三种路径最后显示的结果。

2,在red文件夹 下面建立文件夹database ,该夹子内部存放cnbruce.mdb文件。
所以现在可以很肯定的知道数据库文件的绝对路径是:E:/red/database/cnbruce.mdb
以上应该没有问题吧,很明白的继续往下看,不明白的赶快学下windows操作系统 -_-!

3,为了进行比较对照,继续在red文件夹 下面建立blue文件夹 ,该夹子内部存放同样的conn.asp文件

Html代码
  1. < %=Server.Mappath ("database/cnbruce.mdb")% >   
  2. < %=Server.Mappath ("/database/cnbruce.mdb")% >   
  3. < %=Server.Mappath ("../database/cnbruce.mdb")% >   
<%=Server.Mappath
("database/cnbruce.mdb")%>
<%=Server.Mappath
("/database/cnbruce.mdb")%>
<%=Server.Mappath
("../database/cnbruce.mdb")%>

 

4,当然很重要的就是对red文件夹 进行虚拟目录的设定。方法是在red文件夹 上右键鼠标,选择“共享...”,弹出窗口中继续选择“Web共享”标签,选择“共享这个文件夹”,别名设为“red ”。最后“确定”。

如图片显示不完整请点击查看

5,OK,现在就可以来调试两个conn.asp文件了。

先看red文件夹下面的,输入的URL应该是:http://localhost/red/conn.asp

如图片显示不完整请点击查看

观看结果可以知道其中只有一个正确,那就是
<%=Server.Mappath ("database/cnbruce.mdb")%>

6,再来看red文件夹下的blue文件夹内的,URL:http://localhost/red/blue/conn.asp

如图片显示不完整请点击查看

观察结果,仍然有一个正确,那就是
<%=Server.Mappath ("../database/cnbruce.mdb")%>

7,来总结下:为什么两次显示正确路径的不是同一代码呢?
很显然是相对路径的缘故。red文件夹下的conn.asp文件和database文件夹是兄弟关系,所以要找到cnbruce.mdb,就可以直接database/cnbruce.mdb

而blue文件夹下的conn.asp和database文件夹是侄叔关系,要找cnbruce.mdb,当然是../database/cnbruce.mdb ,其中../ 就是到上一层。

8,那再看<%=Server.Mappath ("/database/cnbruce.mdb")%> 两次显示的都是一样的效果,都指向到c:/inetpub/wwwroot/ 下面了,那就是因为在"database"前面添加了"/ ",表示到达根目录,而本地的IIS虚拟根目录就是c:/inetpub/wwwroot/ ,这在默认Web站点属性 里面有。

如图片显示不完整请点击查看

9,注意,再看!一直都是在本地的,那上传到网络上有是怎么样呢?

首先,要正确清醒地知道conn.asp连接文件和*.mdb数据库文件的地址关系
接着,选择正确的Server.Mappath 转换方法

建议,最好不采用"/ "路径。因为这涉及到虚拟主机和非虚拟主机的问题。

所谓虚拟主机,比如我本人的站点,其虚拟的根目录就是网站本身的根目录,不存在转向到c:/inetpub/wwwroot/的问题。

可以调试
http://www.cnbruce.com/red/conn.asp
http://www.cnbruce.com/red/blue/conn.asp

可以看出:采用"/ "的时候的路径显示就是本站的根地址。

10,一定要注意!

万里长征已经到最后了,说什么也要支持住~!

我们虽然知道了conn.asp文件内容的写法,但在我们引用的时候应该要注意include包含文件的实质:被包含文件是在包含文件中执行显示的
所以,无论conn.asp放在哪里,无论conn.asp的内容如何,最后都是取决于包含该文件的文件位置和数据库的位置关系

 

黑色头发  http://heisetoufa.javaeye.com

如果发现本文有误,欢迎批评指正

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值