C#路径总结
| 【相对路径】 | |
| Request.ApplicationPath | /src |
| Path.GetDirectoryName(HttpContext.Current.Request.RawUrl ) | //src//Xiaoshe |
| Context.Request.Path | /src/Xiaoshe/Xiaoshe_New.aspx |
| Context.Request.CurrentExecutionFilePath | /src/Xiaoshe/Xiaoshe_New.aspx |
| Context.Request.FilePath | /src/Xiaoshe/Xiaoshe_New.aspx |
| HttpContext.Current.Request.RawUrl | /src/Xiaoshe/Xiaoshe_New.aspx |
| HttpContext.Current.Request.Url | http://localhost:1344/src/Xiaoshe/Xiaoshe_New.aspx |
| TemplateSourceDirectory | /src/Controls |
| 【绝对路径】 | |
| Server.MapPath("./") | E://Wonsoft//Pro2//src//Xiaoshe// |
| Server.MapPath("") | E://Wonsoft//Pro2//src//Xiaoshe |
| Context.Request.PhysicalApplicationPath | E://Wonsoft//Pro2//src// |
| Context.Request.PhysicalPath | E://Wonsoft//Pro2//src//Xiaoshe//Xiaoshe_New.aspx |
| MapPathSecure(TemplateSourceDirectory) | E://Wonsoft//Pro2//src//Controls string |
| 【其他】 | |
| Control.ResolveClientUrl(string relativeUrl) | |
| Control.ResolveUrl(string relativeUrl) |
/获取当前进程的完整路径,包含文件名(进程名)。
string str = this.GetType().Assembly.Location;
result: X:\xxx\xxx\xxx.exe (.exe文件所在的目录+.exe文件名)
//获取新的 Process 组件并将其与当前活动的进程关联的主模块的完整路径,包含文件名(进程名)。
string str = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
result: X:\xxx\xxx\xxx.exe (.exe文件所在的目录+.exe文件名)
//获取和设置当前目录(即该进程从中启动的目录)的完全限定路径。
string str = System.Environment.CurrentDirectory;
result: X:\xxx\xxx (.exe文件所在的目录)
//获取当前 Thread 的当前应用程序域的基目录,它由程序集冲突解决程序用来探测程序集。
string str = System.AppDomain.CurrentDomain.BaseDirectory;
result: X:\xxx\xxx\ (.exe文件所在的目录+"\")
//获取和设置包含该应用程序的目录的名称。
string str = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
result: X:\xxx\xxx\ (.exe文件所在的目录+"\")
//获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。
string str = System.Windows.Forms.Application.StartupPath;
result: X:\xxx\xxx (.exe文件所在的目录)
//获取启动了应用程序的可执行文件的路径,包括可执行文件的名称。
string str = System.Windows.Forms.Application.ExecutablePath;
result: X:\xxx\xxx\xxx.exe (.exe文件所在的目录+.exe文件名)
//获取应用程序的当前工作目录(不可靠)。
string str = System.IO.Directory.GetCurrentDirectory();
result: X:\xxx\xxx (.exe文件所在的目录)
========================================================
.NET中三种获取当前路径的代码
//Web编程
HttpContext.Current.Server.MapPath("FileName")
System.Web.HttpContext.Current.Request.Path
//Windows编程
System.Environment.CurrentDirectory
//Mobile编程
Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
A.指定 客户端元素 资源的路径
B.指定 服务器控件 资源的路径
C.确定当前网站的物理文件路径
============================
使用网站中的资源时,通常必须指定资源的路径。
例如,您可以使用 URL 路径引用页面中的图像文件或网站中其他位置处的页面的 URL。
同样,Web 应用程序中的代码可以使用基于服务器的文件的物理文件路径对文件进行读写操作。
ASP.NET 提供用于引用资源并确定应用程序中的页面或其他资源的路径的方法。
A.指定 客户端元素 资源的路径
------------------------------
许多情况下,页面中的元素或控件必须引用外部资源,如文件。
ASP.NET 允许您通过各种方法引用外部资源。
所选方法取决于使用客户端元素还是服务器控件。
元素(不是页面中的服务器控件,而是客户端元素)以原样传递给浏览器。
因此,从客户端元素中引用资源时,应根据 HTML 中 URL 的标准规则构造路径。
可以使用完全限定(绝对)URL 路径,也可以使用各种类型的相对路径。
例如,如果页面包含一个 img 标记,则可以使用以下路径之一设置其 src 属性:
绝对 URL 路径:
阅读代码编辑代码运行效果复制HTML代码保存代码
如果引用其他位置(如外部网站)中的资源,则绝对 URL 路径非常有用。
站点根目录相对路径,
根据站点(不是应用程序)根目录进行解析。
此示例路径假定 Images 文件夹存在于网站根目录下:
阅读代码编辑代码运行效果复制HTML代码保存代码
如果您的网站为 http://www.xxx.com,则路径将解析为以下形式:
http://www.xxx.com/Images/SampleImage.jpg
如果将跨应用程序的资源(如图像或客户端脚本文件)
保留在网站根目录下的文件夹中,则站点根目录相对路径非常有用。
根据当前页面路径解析的相对路径:
阅读代码编辑代码运行效果复制HTML代码保存代码
解析为当前页面路径对等的相对路径。
阅读代码编辑代码运行效果复制HTML代码保存代码
注意
默认情况下,浏览器使用当前页面的 URL 作为基准解析相对路径。
但是,您可以在页面中包含 HTML base 元素,以指定替代基路径。
B.指定 服务器控件 资源的路径
-----------------------------
在引用资源的 ASP.NET 服务器控件中,
可以使用绝对路径或相对路径,这一点与客户端元素一样。
如果使用相对路径,则相对于页面、用户控件或包含该控件的主题的路径进行解析。
例如,假设 Controls 文件夹中包含一个用户控件。
该用户控件包含一个 Image Web 服务器控件,
该服务器控件的 ImageUrl 属性设置为以下路径:
Images/SampleImage.jpg
该用户控件运行时,路径将解析为以下形式:
/Controls/Images/SampleImage.jpg
无论承载用户控件的页面位置如何,都是如此。
服务器控件中的绝对和相对路径引用具有以下缺点:
绝对路径在应用程序之间是不可移植的。
如果移动绝对路径指向的应用程序,则链接将会中断。
如果将资源或页面移动到不同的文件夹,
可能很难维护采用客户端元素样式的相对路径。
为克服这些缺点,
ASP.NET 启用了 Web 应用程序根目录运算符 (~),
在服务器控件中指定路径时,可以使用该运算符。
ASP.NET 会将 ~ 运算符解析为当前应用程序的根目录。
可以结合使用 ~ 运算符和文件夹来指定基于当前根目录的路径。
下面的示例
演示使用 Image 服务器控件时用于指定图像的根目录相对路径的 ~ 运算符:
复制ASPX代码保存代码
ImageUrl="~/Images/SampleImage.jpg" />
ImageUrl="~/Images/SampleImage.jpg" />
在该示例中,
图像文件将从 Web 应用程序根目录下的 Images 文件夹中直接读取,
无论该页面位于网站的什么位置。
注意
~ 运算符只能为服务器控件识别,并且位于服务器代码中。
不能将 ~ 运算符用于客户端元素。
可以在服务器控件中的任何与路径有关的属性中使用 ~ 运算符。
注意
在主控页中,资源的路径基于内容页的路径进行解析。
C.确定当前网站的物理文件路径
----------------------------
在应用程序中,您可能需要确定服务器上的文件或其他资源的路径。
例如,如果应用程序以编程方式对文本文件进行读写操作,
则必须为用于读取和写入的方法提供该文件的完整物理路径。
将物理文件路径(如 C:\Website\MyApplication)
硬编码到应用程序中并不是很好的做法,
因为如果移动或部署应用程序,则路径会发生更改。
但是,
ASP.NET 为您提供了以编程方式获取应用程序中的任何物理文件路径的方法。
然后,您可以使用基文件路径创建所需资源的完整路径。
用于确定文件路径的两种最常用的 ASP.NET 功能是
返回路径信息的 HttpRequest 对象的属性,以及 MapPath 方法。
注意
不应将物理文件路径发送到客户端,
因为它们可能会被恶意用户用来获取有关您的应用程序的信息。
根据请求属性确定路径
下表列出了 HttpRequest 对象的属性,
这些属性帮助您确定应用程序中的资源的路径。
下面的示例假定使用以下 URL 来发出浏览器请求:
http://www.xxx.com/MyApplication/MyPages/Default.aspx
对于这些示例,
术语“虚拟路径”是指跟在服务器标识符后面的请求 URL 的一部分,
此时虚拟路径如下所示:
/MyApplication/MyPages/Default.aspx
此外,这些示例假定网站根目录的物理路径为以下形式:
C:\inetpub\wwwroot\MyApplication\
最后,这些示例假定物理路径包含一个名为 MyPages 的文件夹。
则相关属性及其返回值如下:
ApplicationPath
获取当前应用程序的根目录路径,
无论在该应用程序中的什么位置请求该路径。
对于此示例,该属性将返回以下内容:
/
CurrentExecutionFilePath
获取当前请求的虚拟路径。
不同于 FilePath,
差别在于如果请求已在服务器代码中被重定向,
则 CurrentExecutionFilePath 就是正确的。
对于此示例,该属性将返回以下内容:
/MyApplication/MyPages/Default.aspx
如果作为对 Transfer 或 Execute 进行调用的结果,
您获取正在运行的代码中的属性,则路径将反映该代码的位置。
FilePath
获取当前请求的虚拟路径。
对于此示例,该属性将返回以下内容:
/MyApplication/MyPages/Default.aspx
不同于 CurrentExecutionFilePath,FilePath 不反映服务器端转换。
Path
获取当前请求的虚拟路径。对于此示例,该属性将返回以下内容:
/MyApplication/MyPages/default.aspx
PhysicalApplicationPath
获取当前正在执行的应用程序的根目录的物理文件系统路径。
对于此示例,该属性将返回以下内容:
C:\inetpub\wwwroot\
PhysicalPath
获取与请求的 URL 对应的物理文件系统路径。
对于此示例,该属性将返回以下内容:
C:\inetpub\wwwroot\MyApplication\MyPages\default.aspx
使用 MapPath 方法
MapPath 方法返回传递给该方法的虚拟路径的完整物理路径。
例如,以下代码返回网站根目录的文件路径:
Visual Basic :
复制VB.NET代码保存代码Dim rootPath As String = Server.MapPath("~")
C# :
复制C#代码保存代码String rootPath = Server.MapPath("~");
注意
传递给 MapPath 方法的路径必须为应用程序相对路径,而不是绝对路径。
C#路径总结的更多相关文章
- mapreduce中一个map多个输入路径
package duogemap; import java.io.IOException; import java.util.ArrayList; import java.util.List; imp ...
- Akka.net路径里的user
因为经常买双色球,嫌每次对彩票号麻烦,于是休息的时候做了个双色球兑奖的小程序,做完了发现业务还挺复杂的,于是改DDD重做设计,拆分服务,各种折腾...,不过这和本随笔没多大关系,等差不多了再总结一下, ...
- java中servlet的各种路径
1. web.xml中<url-pattern>路径,(叫它Servlet路径!) > 要么以“*”开关,要么为“/”开头 2. 转发和包含路径 > *****以“/”开头:相 ...
- 【C#代码实战】群蚁算法理论与实践全攻略——旅行商等路径优化问题的新方法
若干年前读研的时候,学院有一个教授,专门做群蚁算法的,很厉害,偶尔了解了一点点.感觉也是生物智能的一个体现,和遗传算法.神经网络有异曲同工之妙.只不过当时没有实际需求学习,所以没去研究.最近有一个这样 ...
- 使用JavaScript为一张图片设置备选路径
在做网页开发的时候,有时候希望给图片设置一个备选路径,即,当src属性对应的主路径加载失败的时候,图片可以马上切换到备选路径.这样,即使主路径失效了,显示备用路径也不会影响网页的正常体验. 注意到网页 ...
- iOS之开发中一些相关的路径以及获取路径的方法
模拟器的位置: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs ...
- Android中访问sdcard路径的几种方式
以前的Android(4.1之前的版本)中,SDcard路径通过"/sdcard"或者"/mnt/sdcard"来表示,而在JellyBean(安卓4.1)系统 ...
- 【每日一linux命令1】linux命令路径
一.路径: 执行命令前必须要考虑的一步是命令的路径,若是路径错误或是没有正确的指定,可能导致错误 的执行或是找不到该命令.要知道设置的路径,可执行以下命令: echo $PATH 显示结果: 这时我们 ...
- hibernate-mapping-3.0.dtd;hibernate-configuration-3.0.dtd;hibernate.properties所在路径
hibernate-mapping-3.0.dtd 所在路径:hibernate-release-5.2.5.Final\project\hibernate-core\src\main\resourc ...
- .NET全栈开发工程师学习路径
PS:最近一直反复地看博客园以前发布的一条.NET全栈开发工程师的招聘启事,觉得这是我看过最有创意也最朴实的一个招聘启事,更为重要的是它更像是一个技术提纲,能够指引我们的学习和提升,现在转载过来与各位 ...
随机推荐
- idea 重写toString()模板,转成json格式
idea toString()模板,将对象toString()为json格式. 1. 2.点击新增 public java.lang.String toString() { final java.la ...
- Git & Github 一页简明笔记
由于小组工程需要使用git&github的版本控制来协作,但我对其使用并不熟悉,特此写篇一页的笔记放在手边,备随时查阅. 相信这种一页的简明笔记,对大家也是有帮助的.我的笔记总结自廖雪峰的Gi ...
- MongoDB学习与BUG解答
简单介绍: MongoDb也是NoSQL中的一种,并且是应用比较火的一门解决高效处理数据的技术. 网上说它是介于关系数据库 和非关系数据库之间的产品,它是非关系数据库中最丰富的,最像关系数据的. Q: ...
- WPF中RadioButton的分组
当界面上出现多组Radiobutton时,将所有的Radiobutton写在同一个Grid里面,导致系统认为所有的Radiobutton是同一组,造成选择混乱,解决的方法: 1.要为属于同个组的Rad ...
- Javascript写入txt和读取txt文件示例
1. 写入 FileSystemObject可以将文件翻译成文件流. 第一步: 例: 复制代码 代码如下: Var fso=new ActiveXObject(Scripting.FileSystem ...
- Ibatis中传List参数
Ibatis中用list传参数的方式. Java代码 select count(id) from `user` where id in #[]# and status=1 . <select ...
- The web application [/codeMarket] registered the JBDC driver[.........] but failed to unregister it when the web application was stopped. To prevent
如果你报错了上面的这个严重,那么你的tomcat版本一定是在6.0.25之上的 原因:tomcat 6.025以后在sever.xml中引入了内存泄露侦测,对于垃圾回收不能处理的对像,它就会做日志. ...
- [转]Oracle数据库中的约束
SQL 约束 约束用于限制加入表的数据的类型. 可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句). 我们将主要探讨以下几种约 ...
- SQLHelper初实现---杨中科版(易懂,代码多点)
public class SQLHelper { //获取连接字符串,,引用Configurationl类库,并引用命名空间using System.Configuration; private st ...
- Java算法-各种题目总结
1.排列计算 /*[程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析: 兔子 ...