C# 路徑問題

~/ 姐仅、./ 忠蝗、../ 欧引、 / 垮媒、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)前路徑的方法:

  1. System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName
  1. System.Environment.CurrentDirectory

-獲取和設(shè)置當(dāng)前目錄(該進程從中啟動的目錄)的完全限定目錄曹质。

  1. System.IO.Directory.GetCurrentDirectory()

-獲取應(yīng)用程序的當(dāng)前工作目錄。這個不一定是程序從中啟動的目錄啊擎场,有可能程序放在C:\www里,這個函數(shù)有可能返回C:\Documents and Settings\ZYB,或者C:\Program Files\Adobe\羽德。

  1. System.AppDomain.CurrentDomain.BaseDirectory

-獲取程序的基目錄。

  1. System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase

-獲取和設(shè)置包括該應(yīng)用程序的目錄的名稱迅办。

  1. System.Windows.Forms.Application.StartupPath

-獲取啟動了應(yīng)用程序的可執(zhí)行文件的路徑宅静。

  1. 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ù)器目錄下

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末厘贼,一起剝皮案震驚了整個濱河市界酒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌嘴秸,老刑警劉巖毁欣,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異岳掐,居然都是意外死亡凭疮,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門串述,熙熙樓的掌柜王于貴愁眉苦臉地迎上來执解,“玉大人,你說我怎么就攤上這事纲酗∷ル纾” “怎么了新蟆?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長右蕊。 經(jīng)常有香客問我琼稻,道長,這世上最難降的妖魔是什么尤泽? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任欣簇,我火速辦了婚禮,結(jié)果婚禮上坯约,老公的妹妹穿的比我還像新娘熊咽。我一直安慰自己,他們只是感情好闹丐,可當(dāng)我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布横殴。 她就那樣靜靜地躺著,像睡著了一般卿拴。 火紅的嫁衣襯著肌膚如雪衫仑。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天堕花,我揣著相機與錄音文狱,去河邊找鬼。 笑死缘挽,一個胖子當(dāng)著我的面吹牛瞄崇,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播壕曼,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼苏研,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了腮郊?” 一聲冷哼從身側(cè)響起摹蘑,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎轧飞,沒想到半個月后衅鹿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡过咬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年塘安,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片援奢。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖忍捡,靈堂內(nèi)的尸體忽然破棺而出集漾,到底是詐尸還是另有隱情切黔,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布具篇,位于F島的核電站纬霞,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏驱显。R本人自食惡果不足惜诗芜,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望埃疫。 院中可真熱鬧伏恐,春花似錦、人聲如沸栓霜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽胳蛮。三九已至销凑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間仅炊,已是汗流浹背斗幼。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留抚垄,地道東北人蜕窿。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像督勺,于是被迫代替她去往敵國和親渠羞。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容