asp.net編程獲取項(xiàng)目根目錄實(shí)現(xiàn)方法集合
本文實(shí)例總結(jié)了asp.net編程獲取項(xiàng)目根目錄實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:
編寫(xiě)程序的時(shí)候,經(jīng)常需要用的項(xiàng)目根目錄。自己總結(jié)如下
1、取得控制臺(tái)應(yīng)用程序的根目錄方法
方法1、Environment.CurrentDirectory 取得或設(shè)置當(dāng)前工作目錄的完整限定路徑
方法2、AppDomain.CurrentDomain.BaseDirectory 獲取基目錄,它由程序集沖突解決程序用來(lái)探測(cè)程序集
2、取得Web應(yīng)用程序的根目錄方法
方法1、HttpRuntime.AppDomainAppPath.ToString();//獲取承載在當(dāng)前應(yīng)用程序域中的應(yīng)用程序的應(yīng)用程序目錄的物理驅(qū)動(dòng)器路徑。用于App_Data中獲取
方法2、Server.MapPath("") 或者 Server.MapPath("~/");//返回與Web服務(wù)器上的指定的虛擬路徑相對(duì)的物理文件路徑
方法3、Request.ApplicationPath;//獲取服務(wù)器上ASP.NET應(yīng)用程序的虛擬應(yīng)用程序根目錄
3、取得WinForm應(yīng)用程序的根目錄方法
① Environment.CurrentDirectory.ToString();//獲取或設(shè)置當(dāng)前工作目錄的完全限定路徑
② Application.StartupPath.ToString();//獲取啟動(dòng)了應(yīng)用程序的可執(zhí)行文件的路徑,不包括可執(zhí)行文件的名稱(chēng)
③ Directory.GetCurrentDirectory();//獲取應(yīng)用程序的當(dāng)前工作目錄
④ AppDomain.CurrentDomain.BaseDirectory;//獲取基目錄,它由程序集沖突解決程序用來(lái)探測(cè)程序集
⑤ AppDomain.CurrentDomain.SetupInformation.ApplicationBase;//獲取或設(shè)置包含該應(yīng)用程序的目錄的名稱(chēng)
其中:以下兩個(gè)方法可以獲取執(zhí)行文件名稱(chēng)
1、Process.GetCurrentProcess().MainModule.FileName;//可獲得當(dāng)前執(zhí)行的exe的文件名。
2、Application.ExecutablePath;//獲取啟動(dòng)了應(yīng)用程序的可執(zhí)行文件的路徑,包括可執(zhí)行文件的名稱(chēng)
相信很多用asp.net+Access做網(wǎng)站的朋友經(jīng)常都會(huì)有這樣一個(gè)需求:就是想在數(shù)據(jù)庫(kù)訪問(wèn)層類(lèi)庫(kù)中獲取Access數(shù)據(jù)庫(kù)的物理路徑,然后再拼接數(shù)據(jù)庫(kù)連接字符串進(jìn)行數(shù)據(jù)庫(kù)相關(guān)的操作.在網(wǎng)站UI層我們可以有很多種方法獲取一個(gè)網(wǎng)站的物理路徑,如:
1. Request.PhysicalApplicationPath
2. Request.MapPath("~/"),但是在數(shù)據(jù)庫(kù)訪問(wèn)層用這些方法就不行
using System.Reflection; using System.IO; //使用前別忘了引用這兩個(gè)命名空間 /// <summary> /// 獲取Access數(shù)據(jù)庫(kù)的物理路徑 /// </summary> /// <returns></returns> public static string GetDBPath() { string str = Assembly.GetExecutingAssembly().Location; str = Path.GetDirectoryName(str) + @"\__AssemblyInfo__.ini"; str = File.ReadAllText(str, System.Text.Encoding.Unicode); int index = str.IndexOf("file:///") + 8; int length = str.IndexOf("/bin"); str = str.Substring(index, length - index); str = str.Replace('/', '\\'); str += @"\App_Data\DB.mdb"; return str; //最后返回的就是該數(shù)據(jù)庫(kù)的物理路徑. }
代碼解釋:
1. string str = Assembly.GetExecutingAssembly().Location;
獲取到的值是一個(gè)臨時(shí)目錄,如:“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\myproject\ba81bed7\a7082081\assembly\dl3\62f82680\8345eb5b_37a6c901\abc.dll
2.str = Path.GetDirectoryName(str) + @"\__AssemblyInfo__.ini";
關(guān)鍵是這一句,在dll文件同一目錄下有一個(gè)"__AssemblyInfo__.ini"文件,用記事本打開(kāi)可以發(fā)現(xiàn)里面包含有dll的實(shí)際物理地址,知道這個(gè)就好辦了.
3.
str = File.ReadAllText(str, System.Text.Encoding.Unicode); int index = str.IndexOf("file:///") + 8; int length = str.IndexOf("/bin"); str = str.Substring(index, length - index); str = str.Replace('/', '\\'); str += @"\App_Data\cms.mdb";
這些代碼就不詳細(xì)解釋了,就是把那個(gè)ini文件讀出來(lái),從里面找出網(wǎng)站bin文件夾的實(shí)際物理路徑,然后拼接數(shù)據(jù)庫(kù)文件名,就得到了數(shù)據(jù)庫(kù)的物理路徑了,不過(guò)這個(gè)方法有效的前提是數(shù)據(jù)庫(kù)文件跟網(wǎng)站在同一目錄下才行.
希望本文所述對(duì)大家asp.net程序設(shè)計(jì)有所幫助。
- 創(chuàng)建一個(gè)完整的ASP.NET Web API項(xiàng)目
- asp.net 學(xué)習(xí)之路 項(xiàng)目整體框架簡(jiǎn)單的搭建
- asp.net項(xiàng)目開(kāi)發(fā)中用到的小技巧
- 如何改變asp.net項(xiàng)目名稱(chēng)
- ASP.NET編程獲取網(wǎng)站根目錄方法小結(jié)
- asp.net檢查服務(wù)器上目錄或文件是否存在的方法
- asp.net獲取網(wǎng)站目錄物理路徑示例
- Asp.net獲取當(dāng)前目錄的方法小結(jié)
- asp.net 獲取目錄下的文件數(shù)和文件夾數(shù)
- asp.net Cookie跨域、虛擬目錄等設(shè)置方法
相關(guān)文章
asp.net通過(guò)js實(shí)現(xiàn)Cookie創(chuàng)建以及清除Cookie數(shù)組的代碼
asp.net Cookie創(chuàng)建以及清除Cookie數(shù)組2010-03-03ASP.NET Core自動(dòng)生成小寫(xiě)破折號(hào)路由的實(shí)現(xiàn)方法
這篇文章主要介紹了ASP.NET Core自動(dòng)生成小寫(xiě)破折號(hào)路由的實(shí)現(xiàn)方法,幫助大家更好的理解和學(xué)習(xí)使用ASP.NET Core,感興趣的朋友可以了解下2021-04-04ASP.NET?Core中使用Redis實(shí)現(xiàn)緩存
本文詳細(xì)講解了ASP.NET?Core中使用Redis實(shí)現(xiàn)緩存的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03ASP.NET?MVC5網(wǎng)站開(kāi)發(fā)用戶(hù)注冊(cè)(四)
上一次把基本框架搭建起來(lái)了,這次開(kāi)始整Web部分,終于可以看到界面了小激動(dòng)一下,web項(xiàng)目部分從用戶(hù)功能開(kāi)始,基本有注冊(cè),登錄、注銷(xiāo)、查找、查看、刪除等涉及Member區(qū)域和Manage區(qū)域,供大家參考,具體內(nèi)容如下2015-09-09ASP.NET Core自定義中間件如何讀取Request.Body與Response.Body的內(nèi)容詳解
這篇文章主要給大家介紹了關(guān)于在ASP.NET Core自定義中間件中如何讀取Request.Body與Response.Body的內(nèi)容,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用ASP.NET Core具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05遞歸輸出ASP.NET頁(yè)面所有控件的類(lèi)型和ID的代碼
遞歸輸出ASP.NET頁(yè)面所有控件的類(lèi)型和ID的代碼,需要的朋友可以參考下。2012-01-01.Net Core實(shí)現(xiàn)選擇數(shù)據(jù)熱更新讓服務(wù)感知配置的變化
這篇文章主要介紹了.Net Core實(shí)現(xiàn)選擇數(shù)據(jù)熱更新讓服務(wù)感知配置的變化,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03