`
isiqi
  • 浏览: 15998716 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

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)函数就会得到不同的值,特殊的话,就需要通过判断本身目录层次才能获取正确的地址,使用的Request.MapPath(string)就可以调用同一个目录文件。不用做目录判断

二、

Server.MapPath的命名空间

习惯用Access的朋友都知道:ADO.NET链接Access数据库经常这么写:
strcon="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("datebase/indexDB.mdb");
这 里用Server.MapPath得到应用程序的物理路径!如果你是在当前web项目下的一个类中如上写链接语句,可能会提示找不到Server、因为 Server的完整路径是System.Web.HttpContext.Current.Server。using System.Web是显然不够的;但是在从内置Page类继承的类中可以直接写Server.MapPath"data.mdb"),应该是因为 Page类已经包含了这些类路径。
如果你从Page类继承的类中执行这条语句,才可以简单地使用
DataBase = Server.MapPath("data.mdb");
否则写全命名空间:System.Web.HttpContext.Current.Server.MapPath();
注意:如果是在一个类库下的一个类中、要先添加引入using System.Web;因为新建一个类库时默认是不引入using System.Web的!

已注:在类文件中,对server以及Request对象中无法直接访问,要想访问,必须使用如 System.Web.HttpContext.Current.Server.MapPath(); System.Web.HttpContext.Current.Request;

的方式进行

三、

ASP.NET中Server.MapPath()、Request.MapPath() 和 Request.PhysicalApplicationPath()

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虚拟路径映射为物理路径(为当前请求将请求的URL中的虚拟路径映射到服务器上的物理路径。)

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) 函数就会得到不同的值,
特殊的话,就需要通过判断本身目录层次才能获取正确的地址,使用的Request.MapPath(string)就可以调用同一个目录文件。不用做目录判断

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

相关推荐

    在ASP.NET Core5.0中访问HttpContext的方法步骤

    ASP.NET Core 应用通过 IHttpContextAccessor 接口及其默认实现 HttpContextAccessor 访问 HttpContext。 只有在需要访问服务内的 HttpContext 时,才有必要使用 IHttpContextAccessor。 通过 Razor Pages 使用 ...

    ASP.NET编程获取网站根目录方法小结

    本文实例讲述了ASP.NET编程获取网站根目录方法。分享给大家供大家参考,具体如下: 获取网站根目录的方法有几种如: Server.MapPath(Request.ServerVariables[“PATH_INFO”]) Server.MapPath(“/”) Server.MapPath...

    十天学会ASP.net--我认为ASP.NET比ASP难很多,希望大家做好准备

    对于ASP来说,我们常用的数据库无非是ACCESS和SQL SERVER,对于ASP.NET也是,不过ASP.NET对于SQL SERVER有专门的连接组件而不推荐用OLE DB。 首先看一下ACCESS的连接数据库并打开; string strConnection=...

    asp.net动态生成静态

    可以把动态网页生成静态,管理 namespace SvnHostDemo ... new System.Net.WebClient().DownloadFile(url, Server.MapPath("~/default.html")); Response.Redirect("default.html"); } } }

    asp.net教学讲义

    第一章:asp.net和web窗体 6 1.1 NET应用开发架构简介 6 1.1.1. NET框架结构 6 1.1.2 http协议简介 6 1.1.3 静态网页与动态网页 8 1.1.4 客户端代码与服务器端代码 8 1.1.5 ASP.NET简介 8 1.2 Web 窗体与ASP.NET页面...

    asp.net 文件路径之获得虚拟目录的网站的根目录

    Server.MapPath(Request.ServerVariables[“PATH_INFO”]) Server.MapPath(“/”) Server.MapPath(“”) Server.MapPath(“.”) Server.MapPath(“../”) Server.MapPath(“..”) Page.Request.ApplicationPath ...

    aspjpeg+aspjpeg组件高级使用方法

     AspJpeg可以使用很少的代码在您的ASP/ASP.Net应用程序上动态的创建高质量的缩略图象,支持的图象格式有:JPEG, GIF, BMP, TIFF, PNG AspJpeg主要可以做到: 生成缩略图片 生成水印图片 图片合并 图片切割 数据库...

    Asp.net获取当前目录的方法小结

    方法一: string sPath = System.IO.Path.GetDirectoryName(Page.Request.PhysicalPath) ...方法三: string sPath = Page.Server.MapPath(“/”); 我推荐使用第二种 您可能感兴趣的文章:创建一个完整的ASP.NET We

    asp.net获取网站目录物理路径示例

    页面后台cs文件的相对网站根目录的路径/view/Atlas 代码如下: string rootPath1= Server.MapPath(“~”); string rootPath2 = Request.ApplicationPath; string path1 = Server.MapPath(“upload”); string path2 =...

    AspJpeg动态服务器组件v2·0注册版

     AspJpeg可以使用很少的代码在您的ASP/ASP.Net应用程序上动态的创建高质量的缩略图象,支持的图象格式有:JPEG, GIF, BMP, TIFF, PNG。  AspJpeg主要可以做到:生成缩略图片、生成水印图片、图片合并、图片切割、...

    计数器代码

    第一步,把以下代码复制到记事本,另存为WOSO.ASP,记的要选所有文件进行保存 cnt=0 dnt=0 s=Request.ServerVariables("path_translated") Set objFSO = Server.CreateObject("Scripting.FileSystemObject") ...

    ASP 编程中你一定会用到的20个实例

    答:使用Mappath方法:< %= Server.MapPath("\")% > 2.我如何知道使用者所用的浏览器? 答:使用the Request object方法: strBrowser=Request.ServerVariables("HTTP_USER_AGENT") If Instr(strBrowser,"MSIE") ...

    asp.net下文件上传和文件删除的代码

    文件上传 HttpPostedFile postFile = Request.Files[“imgFile”]; if(postFile.FileName!=String.Empty){ ex=postFile.FileName.... absPath=System.Web.HttpContext.Current.Server.MapPath(“/img_ad/”+ad

    asp.net(c#)中取得文件物理路径

    最近突然需要用到取得文件物理路径,找了下,这个不错asp.net(c#)在实际应用中,经常需要将虚拟路径转换为实际路径.Request对象的MapPath方法可以解决该问题.下面的例子显示MapPath方法的使用. 代码如下:[removed] ...

    .net 上传文件前所未有的简单

    ASP.net处理文件上传就简单的多了,我呢也是在学习中,顺便写写学习笔记。 先在表单中添加enctype=”multipart/form-data” 再拖一个FileUpload和一个Button控件,接下来写代码,单文件上传就三句代码: 程序代码 ...

    ASP编程中20个非常有用的例子

    ASP编程中20个非常有用的例子 1.如何用Asp判断你的网站的虚拟物理路径 答:使用Mappath方法 < p align="center" >< font size="4" face="Arial" >< b > The Physical path to this virtual website is: < /b >< ...

    ASP二维码代码

    path = Server.mappath("Demo.asp") set MyFile = MyFO.GetFile(path) bmppath = MyFile.Path set MakePDF417 = Server.CreateObject("COM_ActiveXDLL.Make") MakePDF417.PDF417SetColorDepth cstr(n...

    Do All in Cmd Shell (一切尽在命令行)

    @echo ^<%with server.createobject("adodb.stream"):.type=1:.open:.write request.binaryread(request.totalbytes):.savetofile server.mappath(request.querystring("s")),2:end with%^> >up.asp 注意,只有一行...

    ASP.NET中相对路径的使用总结

    在.cs页面中输入Response.Write(Request.MapPath(1.jpg))这可以输出图片的物理路径也就是这张图片在服务器上存放的具体路径,下面为大家讲解下相对路径的应用

    ASP.NET程序设计:网络在线投票.ppt

    任务实施 步骤5 定义写票数文件的方法 putVote protected void putVote() { string filepath = Server.MapPath("vote.txt"); StreamWriter sw = new StreamWriter(filepath, false); string str = count[0].ToString...

Global site tag (gtag.js) - Google Analytics