1. Server.MapPath()介绍
Server.MapPath(string path)作用是返回与Web服务器上的指定虚拟路径相对应的物理文件路径。其参数path为Web 服务器的虚拟路径,返回结果是与path相对应的物理文件路径。但有时参数并非为虚拟路径,而是用户自定义的文件名。
Server.MapPath()的全名是System.Web.HttpContext.Current.Server.MapPath()。有时在程序调试时会提示“当前上下文中不存在名称“Server””错误,从而不支持函数Server.MapPath()的使用。尽管引用了命名空间“using System.Web;”也是无济于事,此时就需要使用其全名,或者是当前使用Server.MapPath()函数的类继承自System.Web.UI.Page。
2. Server.MapPath()应用
Server.MapPath("") :返回当前页面所在的物理文件路径
Server.MapPath("/") :返回应用程序根目录所在的物理文件路径
Server.MapPath("./") :返回当前页面所在的物理文件路径
Server.MapPath("../"):返回当前页面所在的上一级的物理文件路径
Server.MapPath("~/"):返回应用程序的虚拟目录(路径)
Server.MapPath("~"):返回应用程序的虚拟目录(路径)
./当前目录
/网站主目录
../上层目录
~/网站虚拟目录
如果当前的网站目录为E:\wwwroot 应用程序虚拟目录为E:\wwwroot\company 浏览的页面路径为E:\wwwroot\company\news\show.asp
在show.asp页面中使用
Server.MapPath("./") 返回路径为:E:\wwwroot\company\news
Server.MapPath("/") 返回路径为:E:\wwwroot
Server.MapPath("../") 返回路径为:E:\wwwroot\company
Server.MapPath("~/") 返回路径为:E:\wwwroot\company
server.MapPath(request.ServerVariables("Path_Info"))
Request.ServerVariables("Path_Translated")
上面两种方式返回路径为 D:\wwwroot\company\news\show.asp
1、Server.MapPath("/") 应用程序根目录所在的位置 如 C:\Inetpub\wwwroot\
2、Server.MapPath("./") 表示所在页面的当前目录
注:等价于Server.MapPath("") 返回 Server.MapPath("") 所在页面的物理文件路径
3、Server.MapPath("../")表示上一级目录
4、Server.MapPath("~/")表示当前应用级程序的目录,如果是根目录,就是根目录,如果是虚拟目录,就是虚拟目录所在的位置 如 C:\Inetpub\wwwroot\Example\
Response.Write(Request.PhysicalApplicationPath.ToString());
Response.Write(Server.MapPath("mydb.mdb").ToString());
经过实验,我发现:Request.PhysicalApplicationPath.ToString()是你的网站所在的目录 ,比如我的就是F:\fq\htdocs\,而这个地址不管你的网页在哪个子文件夹里,都是一样的。
Server.MapPath("mydb.mdb").ToString() 是你的网页所在的文件夹再加上参数字符串,而不管这个参数字符串是什么,存在不存在 比如我在qiye子文件夹里放了一个1/aspx文件,其中有这样一句:Response.Write(Server.MapPath("mydb.mdb").ToString());试验出来的值是:F:\fq\htdocs\qiye\mydb.mdb
另外,Server.MapPath("mydb.mdb").的参数的首部最好不要含有“/”,l因为这意味着根。Response.Write(Server.MapPath("/mydb.mdb").ToString());试验出来的值是:c:/www_root
ASP.NET中Server.MapPath() 和 Request.MapPath()
ASP.NET中Server.MapPath() 和 Request.MapPath()使用区别:
Server.MapPath(string) :是将相对于当前调用文件的文件(或目录)映射为物理路径; Request.MapPath(string) :是将string虚拟路径映射为物理路径(asp中Request无此方法)
Server.MapPath(string) 中string 可以用“../”方式引用父目录,甚至可以将此目录跳到整个WEB目录外,如:C:\WWWROOT 目录为WEB根目录,在根目录文件中调用此Server.MapPath("../xyz.gif"),则可以调用WEB目录外的脚本、资源等。
Request.MapPath(string) 中的string为虚拟目录,只能相对WEB虚拟目录形式的,也不允许"../"方式调用,只能是"/","/xx"等字符串
有时候直接用Server.MapPath(string) 调用一个文件比较麻烦, 因为不同的目录中调用同一个Server.MapPath(string) 函数就会得到不同的值(我今天就在这里灾了,最好看到octverve文章,明白) 特殊的话,就需要通过判断本身目录层次才能获取正确的地址,使用的Request.MapPath(string)就可以调用同一个目录文件。不用做目录判断 | |