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全栈开发工程师的招聘启事,觉得这是我看过最有创意也最朴实的一个招聘启事,更为重要的是它更像是一个技术提纲,能够指引我们的学习和提升,现在转载过来与各位 ...
随机推荐
- 关于git托管的一些心得
GIT托管的一些心得 熟练运用软件进行GIT托管的好处 在上一周的学习中,我提出来了一个疑惑,就是为什么一定要用软件托管而不选择web托管,在这周的学习中,我通过实践体会到了一些运用软件托管的好处: ...
- Android开发新手第一要素
很多新手开发程序的时候,或者将原来跑在Android 2.X上的程序迁移到Android 3.x以上的时候经常会莫名其妙的出现崩溃(Crash).从我的经验来看,这里可能有很多原因,但是最重要也是最常 ...
- css为什么要用悬浮
如果这个100px的宽度是一个Img,横内元素.右边也是横内元素的话和块级元素是不同的. 2.文字环绕图片. div下有个img然后有个span标签 img最好悬浮,悬浮虽然说脱离文档,但是还是占空间 ...
- 《TCP/IP详解卷1:协议》第19章 TCP的交互数据流-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- 微信支付PHP SDK —— 公众号支付代码详解
在微信支付 开发者文档页面 下载最新的 php SDK http://mch.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1 这里假设你已经申请完微 ...
- bean标签
bean的uri的路径 bean标签是属于struts中的标签,使用要在 Struts 1.3 Libraries中 struts-taglib-1.3.8.jar 中META-INFtld ...
- navjs
'use strict';define([ 'jquery'], function($) { var nav = { init : function() { $("#burger-menu& ...
- IntelliJ Idea13无法创建maven模板
一.错误信息: -Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment v ...
- __HTML_5读取文件API
//HTML5 __FileSystemApi <!doctype html> <html> <head> <meta charset="utf-8 ...
- Spring 使用中的设计模式
1. 简单工厂 又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一. 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类. ...