asp.net編程擷取項目根目錄實現方法集合_實用技巧

來源:互聯網
上載者:User

本文執行個體總結了asp.net編程擷取項目根目錄實現方法。分享給大家供大家參考,具體如下:

編寫程式的時候,經常需要用的項目根目錄。自己總結如下

1、取得控制台應用程式的根目錄方法

方法1、Environment.CurrentDirectory 取得或設定當前工作目錄的完整限定路徑
方法2、AppDomain.CurrentDomain.BaseDirectory 擷取基目錄,它由程式集衝突解決程式用來探測程式集

2、取得Web應用程式的根目錄方法

方法1、HttpRuntime.AppDomainAppPath.ToString();//擷取承載在當前應用程式定義域中的應用程式的應用程式目錄的物理磁碟機路徑。用於App_Data中擷取
方法2、Server.MapPath("") 或者 Server.MapPath("~/");//返回與Web伺服器上的指定的虛擬路徑相對的物理檔案路徑
方法3、Request.ApplicationPath;//擷取伺服器上ASP.NET應用程式的虛擬應用程式根目錄

3、取得WinForm應用程式的根目錄方法

① Environment.CurrentDirectory.ToString();//擷取或設定當前工作目錄的完全限定路徑
② Application.StartupPath.ToString();//擷取啟動了應用程式的可執行檔的路徑,不包括可執行檔的名稱
③ Directory.GetCurrentDirectory();//擷取應用程式的當前工作目錄
④ AppDomain.CurrentDomain.BaseDirectory;//擷取基目錄,它由程式集衝突解決程式用來探測程式集
⑤ AppDomain.CurrentDomain.SetupInformation.ApplicationBase;//擷取或設定包含該應用程式的目錄的名稱

其中:以下兩個方法可以擷取執行檔案名稱

1、Process.GetCurrentProcess().MainModule.FileName;//可獲得當前執行的exe的檔案名稱。
2、Application.ExecutablePath;//擷取啟動了應用程式的可執行檔的路徑,包括可執行檔的名稱

相信很多用asp.net+Access做網站的朋友經常都會有這樣一個需求:就是想在資料庫訪問層類庫中擷取Access資料庫的實體路徑,然後再拼接資料庫連接字串進行資料庫相關的操作.在網站UI層我們可以有很多種方法擷取一個網站的實體路徑,如:

1. Request.PhysicalApplicationPath

2. Request.MapPath("~/"),但是在資料庫訪問層用這些方法就不行

using System.Reflection;using System.IO; //使用前別忘了引用這兩個命名空間/// <summary>/// 擷取Access資料庫的實體路徑/// </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;  //最後返回的就是該資料庫的實體路徑.}

代碼解釋:

1. string str = Assembly.GetExecutingAssembly().Location; 

擷取到的值是一個臨時目錄,如:“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";

關鍵是這一句,在dll檔案同一目錄下有一個"__AssemblyInfo__.ini"檔案,用記事本開啟可以發現裡麵包含有dll的實際物理地址,知道這個就好辦了.

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";

這些代碼就不詳細解釋了,就是把那個ini檔案讀出來,從裡面找出網站bin檔案夾的實際實體路徑,然後拼接資料庫檔案名,就得到了資料庫的實體路徑了,不過這個方法有效前提是資料庫檔案跟網站在同一目錄下才行.

希望本文所述對大家asp.net程式設計有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.