~/ 姐仅、./ 忠蝗、../ 欧引、 / 垮媒、http://www.cnblogs.com/問題
比如你的工程是Webapplication1(url是:http://localhost/webapplication1/webform1.aspx)
1.Request.ApplicationPath 就是/Webapplication1
如果是站點就直接返回”/”;
~/ 可以用在需要設(shè)置路徑的控件比如:imagebutton,image等 以及鏈接ascx文件,配置文件.
../ 的好處是可以不知道文件夾的名字知道層次結(jié)構(gòu)就可以了
/ 的好處是針對根路徑,如果本地目錄和服務(wù)器目錄一致,那直接用/就可以保證路徑正確,這種情況很少.
Request.ApplicationPath 注意如果沒有虛擬目錄就直接返回/,那你程序里面就不要設(shè)置/
比如
Request.ApplicationPath+”/images/a.gif” 如果是站點 就是等于 “//images/a.gif”,錯誤的
如果有虛擬目錄就是 “Webapplication1/images/a.gif”
沒有/的
Request.ApplicationPath 發(fā)揮虛擬目錄名稱,如果是站點就返回/
~/ 類似,不過只用服務(wù)端的空間可以識別;
/ 針對目錄
./ 當(dāng)前目錄
../ 相對當(dāng)前目錄的上層目錄
比如你的工程是Webapplication1(url是:http://localhost/webapplication1/webform1.aspx)
Request.ApplicationPath 就是Webapplication1/
~/ 也是 Webapplication1/
/就是http://localhost/
ASP.NET 網(wǎng)站路徑
使用網(wǎng)站中的資源時听系,通常必須指定資源的路徑贝奇。例如,您可以使用 URL 路徑引用頁面中的圖像文件或網(wǎng)站中其他位置處的頁面的 URL靠胜。同樣掉瞳,Web 應(yīng)用程序中的代碼可以使用基于服務(wù)器的文件的物理文件路徑對文件進行讀寫操作毕源。ASP.NET 提供用于引用資源并確定應(yīng)用程序中的頁面或其他資源的路徑的方法。
指定資源的路徑
許多情況下陕习,頁面中的元素或控件必須引用外部資源霎褐,如文件。ASP.NET 支持引用外部資源的各種方法该镣。根據(jù)您使用的是客戶端元素還是 Web 服務(wù)器控件冻璃,選擇的引用方法將有所不同械哟。
客戶端元素
客戶端元素是頁面上的非 Web 服務(wù)器控件元素搏明,它們將按原樣被傳遞給瀏覽器。因此沮脖,從客戶端元素中引用資源時塌忽,應(yīng)根據(jù) HTML 中 URL 的標(biāo)準規(guī)則構(gòu)造路徑拍埠。可以使用完全限定的 URL 路徑(又稱為絕對 URL 路徑)土居,也可以使用各種類型的相對路徑枣购。例如,如果頁面包含 img 元素擦耀,則可以使用以下路徑之一設(shè)置其 src 屬性:
絕對 URL 路徑棉圈。如果引用其他位置(例如外部網(wǎng)站)中的資源,則絕對 URL 路徑非常有用眷蜓。
網(wǎng)站根目錄相對路徑分瘾,此路徑將根據(jù)網(wǎng)站根目錄(而非應(yīng)用程序根目錄)進行解析。如果將跨應(yīng)用程序的資源(例如圖像或客戶端腳本文件)保留在網(wǎng)站根目錄下的文件夾中吁系,則網(wǎng)站根目錄相對路徑非常有用德召。
此示例路徑假定 Images 文件夾位于網(wǎng)站根目錄下。
[圖片上傳失敗...(image-b648c9-1555857354339)]
如果您的網(wǎng)站為 http://www.contoso.com汽纤,則此路徑將解析為以下形式上岗。
http://www.contoso.com/Images/SampleImage.jpg下面是一個根據(jù)當(dāng)前頁面路徑解析的相對路徑。
解析為當(dāng)前頁面路徑對等的相對路徑蕴坪。
注意
默認情況下肴掷,瀏覽器使用當(dāng)前頁面的 URL 作為解析相對路徑的基準。但是背传,您可以在頁面中包含 HTML base 元素呆瞻,以指定替代基路徑。
服務(wù)器控件
在引用資源的 ASP.NET 服務(wù)器控件中径玖,可以使用絕對路徑或相對路徑痴脾,這一點與客戶端元素一樣。如果使用相對路徑挺狰,則相對于頁面明郭、用戶控件或包含該控件的主題的路徑進行解析买窟。例如,假設(shè) Controls 文件夾中包含一個用戶控件薯定。該用戶控件包含一個 Image Web 服務(wù)器控件始绍,此服務(wù)器控件的 ImageUrl 屬性被設(shè)置為以下路徑:Images/SampleImage.jpg。
當(dāng)該用戶控件運行時话侄,上述路徑將解析為以下形式:/Controls/Images/SampleImage.jpg亏推。無論承載該用戶控件的頁面位于何處,結(jié)果都是如此年堆。
注意
在主控頁中吞杭,資源的路徑基于內(nèi)容頁的路徑進行解析。有關(guān)更多信息变丧,請參見 ASP.NET 母版頁概述芽狗。
服務(wù)器控件中的絕對和相對路徑引用具有以下缺點:
絕對路徑在應(yīng)用程序之間是不可移植的。如果移動絕對路徑指向的應(yīng)用程序痒蓬,則鏈接將會中斷童擎。
如果將資源或頁面移動到不同的文件夾,可能很難維護采用客戶端元素樣式的相對路徑攻晒。
為克服這些缺點顾复,ASP.NET 包括了 Web 應(yīng)用程序根目錄運算符 (~),當(dāng)您在服務(wù)器控件中指定路徑時可以使用該運算符鲁捏。ASP.NET 會將 ~ 運算符解析為當(dāng)前應(yīng)用程序的根目錄芯砸。可以結(jié)合使用 ~ 運算符和文件夾來指定基于當(dāng)前根目錄的路徑给梅。
下面的示例演示了使用 Image 服務(wù)器控件時用于為圖像指定根目錄相對路徑的 ~ 運算符假丧。在此示例中,無論頁面位于網(wǎng)站中的什么位置动羽,都將從位于 Web 應(yīng)用程序根目錄下的 Images 文件夾中直接讀取圖像文件虎谢。
二、C#獲取當(dāng)前路徑的方法:
- System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName
- System.Environment.CurrentDirectory
-獲取和設(shè)置當(dāng)前目錄(該進程從中啟動的目錄)的完全限定目錄曹质。
- System.IO.Directory.GetCurrentDirectory()
-獲取應(yīng)用程序的當(dāng)前工作目錄。這個不一定是程序從中啟動的目錄啊擎场,有可能程序放在C:\www里,這個函數(shù)有可能返回C:\Documents and Settings\ZYB,或者C:\Program Files\Adobe\羽德。
- System.AppDomain.CurrentDomain.BaseDirectory
-獲取程序的基目錄。
- System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase
-獲取和設(shè)置包括該應(yīng)用程序的目錄的名稱迅办。
- System.Windows.Forms.Application.StartupPath
-獲取啟動了應(yīng)用程序的可執(zhí)行文件的路徑宅静。
- System.Windows.Forms.Application.ExecutablePath
-獲取啟動了應(yīng)用程序的可執(zhí)行文件的路徑及文件名。
二站欺、操作環(huán)境變量
利用System.Environment.GetEnvironmentVariable()方法可以很方便地取得系統(tǒng)環(huán)境變量姨夹,如:
System.Environment.GetEnvironmentVariable("windir")就可以取得windows系統(tǒng)目錄的路徑纤垂。
以下是一些常用的環(huán)境變量取值:
System.Environment.GetEnvironmentVariable("windir")=C:\WINDOWS
System.Environment.GetEnvironmentVariable("INCLUDE")=C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\include
System.Environment.GetEnvironmentVariable("TMP")=C:\DOCUME1\zhoufoxcn\LOCALS1\Temp
System.Environment.GetEnvironmentVariable("TEMP")=C:\DOCUME1\zhoufoxcn\LOCALS1\Temp
System.Environment.GetEnvironmentVariable("Path")=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\jdk1.5.0\bin;C:\MySQLServer5.0\bin;C:\Program Files\Symantec\pcAnywhere;C:\Program Files\Microsoft SQL Server\80\Tools\BINN
三、關(guān)于""
1 asp.net webform
A:Request.PhysicalApplicationPath獲取站點所在虛擬目錄的物理路徑磷账,最后包含“\”峭沦;
2.c# winform
A:“Application.StartupPath”:獲取當(dāng)前應(yīng)用程序所在目錄的路徑,最后不包含“\”逃糟;
B:“Application.ExecutablePath ”:獲取當(dāng)前應(yīng)用程序文件的路徑吼鱼,包含文件的名稱;如:export.exe
C:“AppDomain.CurrentDomain.BaseDirectory”:獲取當(dāng)前應(yīng)用程序所在目錄的路徑绰咽,最后包含“\”菇肃;
D:“System.Threading.Thread.GetDomain().BaseDirectory”:獲取當(dāng)前應(yīng)用程序所在目錄的路徑,最后包含“\”取募;
E:“Environment.CurrentDirectory”:獲取當(dāng)前應(yīng)用程序的路徑琐谤,最后不包含“\”;
F:“System.IO.Directory.GetCurrentDirectory”:獲取當(dāng)前應(yīng)用程序的路徑玩敏,最后不包含“\”斗忌;
四、程序卸載獲取系統(tǒng)安裝目錄
System.Reflection.Assembly curPath = System.Reflection.Assembly.GetExecutingAssembly();
string path=curPath.Location;//得到安裝程序類SetupLibrary文件的路徑聊品,獲取這個文件路徑所在的目錄即得到安裝程序的目錄;
五飞蹂、asp.net 獲取路徑
1.Request.ApplicationPath->當(dāng)前應(yīng)用的目錄
Jsp中, ApplicationPath指的是當(dāng)前的application(應(yīng)用程序)的目錄,ASP.NET中也是這個意思。
對應(yīng)的--例如我的服務(wù)器上有兩個web應(yīng)用域名都是mockte.com 一個映射到目錄mockte.com/1/ 另一個影射到 http://mockte.com/2/
那么mockte.com/1/就是第一個應(yīng)用的ApplicationPath 同理 mockte.com/2/就是第二個應(yīng)用的ApplicationPath
2.Request.FilePath->對應(yīng)于iis的虛擬目錄
如 URL http://mockte.com/1/index.html/pathinfo
FilePath = /1/index.html
3.Request.Path->當(dāng)前請求的虛擬路徑
Path 是 FilePath 和 PathInfo 尾部的串聯(lián)翻屈。例如 URL http://mockte.com/1/index.html/pathinfo
那么Path = /1/index.html/pathinfo
4.Request.MapPath(string url)->將url映射為iis上的虛擬目錄
這個目錄都是相對于application的根目錄的
于Server.MapPath相比,不會包含類似c:/這樣的路徑
可以理解為是相對路徑(對比的Server.MapPath就是絕對路徑)
5.Server.MapPath(string url)->將url映射為服務(wù)器上的物理路徑
例如 http://mockte.com/1/index.html 假設(shè)你的應(yīng)用程序在c:/iis/MySite中
那么就是 c:/iis/MySite/1/index.html
路徑轉(zhuǎn)換代碼:
//本地路徑轉(zhuǎn)換成URL相對路徑
private string urlconvertor(string imagesurl1)
{
string tmpRootDir = Server.MapPath(System.Web.HttpContext.Current.Request.ApplicationPath.ToString());//獲取程序根目錄
string imagesurl2 = imagesurl1.Replace(tmpRootDir, ""); //轉(zhuǎn)換成相對路徑
imagesurl2 = imagesurl2.Replace(@"/", @"/");
//imagesurl2 = imagesurl2.Replace(@"Aspx_Uc/", @"");
return imagesurl2;
}
//相對路徑轉(zhuǎn)換成服務(wù)器本地物理路徑
private string urlconvertorlocal(string imagesurl1)
{
string tmpRootDir = Server.MapPath(System.Web.HttpContext.Current.Request.ApplicationPath.ToString());//獲取程序根目錄
string imagesurl2 = tmpRootDir + imagesurl1.Replace(@"/", @"/"); //轉(zhuǎn)換成絕對路徑
return imagesurl2;
}
1.使用filePath="/Logs/abc.txt"陈哑,被認為是根目錄,即網(wǎng)頁文件所在的盤符伸眶,默認的是C盤惊窖,則在這里這個路徑被解釋為"C:/Logs/abc.txt"
2.使用filePath="~/Logs/abc.txt",被認為是服務(wù)器的目錄
3.使用filePath="./Logs/abc.txt",仍然是服務(wù)器目錄下