Server.MapPath和Request.PhysicalApplicationPath的异同
很多人对它们都不陌生,在众多的WEB程序中,使用Server.MapPath和Request.PhysicalApplicationPath来操作目录/文件的几率参半,我曾经也经常混用,然而时间久了。发现Request.PhysicalApplicationPath有点“麻烦”?
其实在一般的应用程序中,感觉不到两者的区别,而在一些存在“虚拟目录”、存在多级子目录、需要虚拟目录相互文件操作的站点中,就可以知道它们的区别了。我的总结如下:
1、相对当前路径的文件操作:
可以使用Server.MapPath("test.txt")、Server.MapPath("a/test.txt")、Server.MapPath("../b/test.txt"),这个时候使用Request.PhysicalApplicationPath就很难定位到文件;
2、绝对路径的文件操作:
这个时候两者都可以,有点注意的是Server.MapPath中的绝对是“面向”站点而言的,不会因为“虚拟目录”本身的属性不同而变化,Request.PhysicalApplicationPath就并非如此。
打个比方:主站点指向D:\wwwroot\,虚拟目录指向E:\wwwroot\a\,取名为a。
那么如果我要操作虚拟目录下的E:\wwwroot\a\test.txt,可以使用Server.MapPath("/a/test.txt"),又或者直接使用Server.MapPath("~/test.txt");
那么用Request.PhysicalApplicationPath该怎么写?
很多人数是:Request.PhysicalApplicationPath + "test.txt",我说不一定,为什么?
因为要是该虚拟目录有单独的应用池,Request.PhysicalApplicationPath就是E:\wwwroot\a\,后面加上test.txt就是E:\wwwroot\a\test.txt;
但要是该虚拟目录没有单独的应用池,Request.PhysicalApplicationPath就是D:\wwwroot\,不管你后面怎么加,都定位不到我要找到文件了。呵呵……
3、跨虚拟目录的文件操作:
比如我现在要操作虚拟目录b下的test2.txt文件,使用Server.MapPath("/b/test2.txt")就没有问题(前提是我有操作权限,没有权限是另外一回事)。
而Request.PhysicalApplicationPath根本就无法找到其他的虚拟目录下的文件,不信谁试试,再告诉我方法?!!!
Server.MapPath和Request.PhysicalApplicationPath的异同的更多相关文章
- asp.net中Server.MapPath的使用
http://www.studyofnet.com/news/184.html 本文导读:Server.MapPath()的全名是System.Web.HttpContext.Current.Se ...
- ASP.NET中Request.ApplicationPath、Request.FilePath、Request.Path、.Request.MapPath、Server.MapPath(转载)
1.Request.ApplicationPath->当前应用的目录 Jsp中, ApplicationPath指的是当前的application(应用程序)的目录,ASP.NET中也是这个 ...
- Server.MapPath()
./当前目录/网站主目录../上层目录~/网站虚拟目录 如果当前的网站目录为E:\wwwroot 应用程序虚拟目录为E:\wwwroot\company 浏览的页面路径为E:\wwwroot\co ...
- Server.MapPath()获取本机绝对路径
1. Server.MapPath("/") 应用程序根目录所在的位置 如 C:\Inetpub\wwwroot\ 2.Server.MapPath("./&qu ...
- C# Server.MapPath()
./当前目录 /网站主目录../上层目录~/网站虚拟目录 如果当前的网站目录为E:\wwwroot 应用程序虚拟目录为E:\wwwroot\company 浏览的页面路径为E:\wwwroot\ ...
- Server.MapPath()获取绝对路径
1. Server.MapPath("/") 应用程序根目录所在的位置 如 C:\Inetpub\wwwroot\ 2.Server.MapPath("./&qu ...
- Server.MapPath()目录详解
最近在做相关的开发,碰到了Server.MapPath(),顺便来温习一下 Server.MapPath()获取网站的目录详解 ./当前目录 /网站主目录 ../上层目录 ~/网站虚拟目录 如果当前 ...
- 【转载】ASP.NET中Server.MapPath方法获取网站根目录总结
在ASP.NET网站应用程序中,可以通过Server.MapPath方法来获取跟服务器有关的目录信息,如获取网站的根目录.获取当前代码文件所在的目录路径.获取当前代码所在路径的上级路径等.Server ...
- Server.MapPath 出现未将对象引用设置到对象的实例
此文仅在于使遇到相似问题的朋友能少走弯路 asp.net中我用一个页面的cs文件调用一个自定义类,这个自定义类再调用 System.Web.HttpContext.Current.Server.Map ...
随机推荐
- [canvas]用canvas绘制饼状图
折线图之后又来饼状图啦~\(≧▽≦)/~啦啦啦 <!DOCTYPE html> <html lang="en"> <head> <meta ...
- Python之路第一课Day3--随堂笔记(文件操作)
一.集合的介绍 1.集合操作 集合是一个无序的,不重复的数据组合,它的主要作用如下: 去重,把一个列表变成集合,就自动去重了 关系测试,测试两组数据之前的交集.差集.并集等关系 常用操作 s = se ...
- jqgrid no url reset
如果发现 jqgrid 在运行中出现次错误,可能是以下原因 $('#@(ViewBag.tabcid + "_grid")').jqGrid('navGrid', '#@(View ...
- java 实现冒泡排序
public void bubbleSort(int[] arr) { boolean swapped = true; int j = 0; int tmp; while (swapped) { sw ...
- jQuery File Upload 单页面多实例的实现
jQuery File Upload 的 GitHub 地址:https://github.com/blueimp/jQuery-File-Upload 插件描述:jQuery File Upload ...
- 总结-EL表达式
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ tagl ...
- [转]你不需要jQuery
完全没有否定jQuery的意思,jQuery是一个神奇的.非常有用的工具,可以节省我们大量的时间. 但是,有些时候,我们只需要jQuery的一个小功能,来完成一个小任务,完全没有必要加载整个jQuer ...
- iOS相关笔记
#协议[1] [2] @property (nonatomic, assign) id<EveryFrameDelegate> delegate; 表明,这个delegate是一个需要实现 ...
- 20155206赵飞技能获取经验,C语言学习感想与对JAVA的学习目标
自己较强的技能获取经验. 1:实话实说我自己是没有哪个技能可以超过90%的人的,只有自认为做的还可以的一些事情,例如打篮球,office软件的应用,一百米跑.至于其他方面就是很平庸了. 2:经验主要有 ...
- Spring操作指南-IoC基础环境配置(基于XML)