一.关于相对路径和绝对路径
相对路径绝对路径
通常,ASP.NET站点需要将相对路径转换为绝对路径。 通常使用Server.MapPath ()方法。 例如,在网站渠道下
如果有个' Uploads '文件夹,则调用Server.MapPath('Uploads ' )将返回此文件夹在服务器上的绝对路径。 例如,如下所示
D:Web1Uploads。
另一种方法是使用HttpRuntime.AppDomainAppPath。 它读取当前网站的执行目录。
关于波浪线~
:
路径前面加上波浪线“~”表示从站点根目录开始的相对路径。 这经常在引用图片和CSS时使用。 例如“~Images”。 此路径也可以传递给Server.MapPath )以返回绝对路径。
总是从网站和目录出发:
请注意,在某些情况下,这不是指MVC站点,例如在网站上使用URL重写组件。 可能会发生路径问题。 例如,如果站点根目录下有页面,并且正在进行URL重写的配置是静态HTML页面,则路径将增加两个。 浏览资源文件时有问题。 一
种子在后台代码中通过“~”获取根目录或使用ResolveUrl ()方法。 但是,其实最高效、最简洁的写法是直接使用“/”来表示根目录。 例如
时,无论此标记位于哪个页面下,都可以找到根目录下Images文件夹下的shit.png。
二.正斜杠和反斜杠
由于URL使用“/”,因此在处理URL (分析和转向)时,必须向用户返回正斜杠,方向为“/”。 其中
“/”表示根目录。
. /当前目录。
//
当前目录的高级别目录。
由于Windows使用的是“”,因此在执行IO操作时(例如,在将用户上传的文件保存到硬盘时),必须使用方向为“”的斜线。
其实这里有问题。 例如,可以设置将网站图像上传到文件夹的路径。 是在配置文件中写“Uploads”还是“/Uploads”? 毕竟,这个常数必须同时读取到URL和程序中。 当然,可以在程序中进一步处理。
三.路径衔接
最简单的连接是用“”操作符将两个字符串连接起来。 一旦遇到已知路径,这种做法树就有问题。 但是,我们获取的变量有时不能很好地控制。 虽然可能验证了逻辑
处理编辑,但验证不一定灵活。 例如,此路径: " Uploads "与" Uploads"的含义相同。 但是,如果用字符串直接将该路径相加并与其他路径组合
起来,比如“2011”,显然有问题。 前者缺一个斜线。 是Uploads2011。 而且,我们需要的结果是uploads2011。
在这种情况下,必须使用System.IO.Path类的Combine方法。 以下两个语句返回相同的结果。
path.combine(@'uploads ',' 2011 ' ); path.combine(@'uploads ',
' 2011 '; 复制代码的结果是Uploads2011
请注意不要在第二个参数前面加上“”。 例如,如果将第二个参数更改为“2011”,则返回值为“2011”,并且“上载”将丢失。
四.服务器路径的相关属性和方法
无论APP应用程序中的哪个位置请求路径,应用程序路径都将获取当前APP应用程序的根路径。 在本示例中,该属性返回:
/
2、CurrentExecutionFilePath获取当前请求的虚拟路径。 与众不同
FilePath,区别在于,如果请求是通过服务代码重定向的,则CurrentExecutionFilePath是正确的。 在本示例中,该属性返回:
/my应用程序/文件
作为对传输器或执行
调用的结果是获取正在运行的代码中的属性,路径将反映代码的位置。
3、文件路径获取当前请求的虚拟路径。 在本示例中,该属性返回:
/my应用程序/文件
与CurrentExecutionFilePath不同,文件路径不反映服务器端转换。
4、Path获取当前请求的虚拟路径。 在本示例中,该属性返回:
/my应用程序/文件
5、PhysicalApplicationPath获取当前正在运行的APP应用程序根目录的物理文件系统路径。 在本示例中,该属性返回:
C:inetpubwwwroot
6、物理路径获取和请求的
与URL对应的物理文件系统路径。 在本示例中,该属性返回:
c :inetpubwwwrootmy applicationmypagesdefault.aspx
7、使用地图
方法MapPath
方法返回传递给方法的虚拟路径的完整物理路径。 例如,以下代码返回网站根目录的文件路径:
string root path=server.mappath ('~';
提醒他
MapPath方法的路径必须是APP应用程序相对路径,而不是绝对路径。