社区后台开发 → 浏览:帖子主题
* 帖子主题:ASP.NET 获取各级目录 Server.MapPath 详解
pojin (ID: 1)
头衔:论坛坛主
等级:究级天王[荣誉]
积分:1301
发帖:99
来自:保密
注册:2022-08-28 23:20:57
造访:2025-03-23 21:18:24
[ 第 1 楼 ] 回复
Server.MapPath("/") 应用程序根目录所在的位置 如 C:\Inetpub\wwwroot\
Server.MapPath("~/")表示当前应用级程序的目录,如果是根目录,就是根目录,如果是虚拟目录,就是虚拟目录所在的位置 如:C:\Inetpub\wwwroot\Example\
Server.MapPath("./") 表示所在页面的当前目录 注:等价于Server.MapPath("") 返回 Server.MapPath("")所在页面的物理文件路径 :返回路径为:E:\wwwroot\company\news
Server.MapPath("../")表示上一级目录 :返回路径为:E:\wwwroot\company
App_Code文件夹下 类获取路径 HttpRuntime.AppDomainAppPath : 注:等效于Server.MapPath("~")。
server.MapPath(request.ServerVariables("Path_Info")),Request.ServerVariables("Path_Translated") 上面两种方式返回路径为 D:\wwwroot\company\news\show.aspx

Server.MapPath(Request.ApplicationPath);和HttpRuntime.AppDomainAppPath有何区别?
对于:http://localhost/DllTest/DLayer.aspx
Server.MapPath( ".")---D:\wwwroot\DllTest
HttpRuntime.AppDomainAppPath---D:\wwwroot\DllTest\
一个有最后的'\ ',一个没有
2022-11-03 13:43:49 IP:已设置保密
pojin (ID: 1)
头衔:论坛坛主
等级:究级天王[荣誉]
积分:1301
发帖:99
来自:保密
注册:2022-08-28 23:20:57
造访:2025-03-23 21:18:24
[ 第 2 楼 ] 回复
Server.MapPath的命名空间:如果你是在当前web项目下的一个类中如上写链接语句,可能会提示找不到Server、因为Server的完整路径是System.Web.HttpContext.Current.Server  但是在从内置Page类继承的类中可以直接写Server.MapPath"data.mdb",应该是因为Page类已经包含了这些类路径。



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) 函数就会得到不同的值.
2022-11-03 13:44:21 IP:已设置保密
分页: 1, 共 1 页
快速回复主题
账号/密码
用户: 没有注册?密码:
评论内容