首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

ASP.NET Global.asax 取得應用程式絕對實體路徑:AppDomain.CurrentDomain.BaseDirectory

     編輯:ASP.NET 基礎

情境

在 Global.asax 的 Application_Start、Application_Error 或靜態方法中,無法使用 Server.MapPath()(需 HttpContext),此時需透過 AppDomain 取得網站根目錄實體路徑。

單行程式碼

string absolutePath = AppDomain.CurrentDomain.BaseDirectory;

回傳值範例

C:\inetpub\wwwroot\MyWebApp\   // IIS 部署
D:\Projects\MyWebApp\          // Visual Studio 偵錯 (IIS Express)
/var/www/MyWebApp/             // Linux + Kestrel (ASP.NET Core 另用 IWebHostEnvironment)

常見用法

  • 讀寫 ~/App_Data/、~/Logs/、~/Temp/ 等非網頁存取資料夾
  • 載入設定檔 Path.Combine(absolutePath, "Config", "settings.json")
  • Global.asax 排程任務中存取檔案系統(見上一篇 Timer 範例)

補充:ASP.NET Core 專案

若為 ASP.NET Core,請注入 IWebHostEnvironment 或 IHostEnvironment,使用 env.ContentRootPath 取得專案根目錄,env.WebRootPath 取得 wwwroot 目錄。

快速對照表

情境API備註
.aspx / .ashx / Controller ActionServer.MapPath("~/xxx")需 HttpContext
Global.asax / 靜態類別 / 背景執行緒AppDomain.CurrentDomain.BaseDirectory無需 HttpContext
ASP.NET Core (DI)IWebHostEnvironment.ContentRootPath建構子注入
類別庫專案Assembly.GetExecutingAssembly().Location取得 DLL 所在目錄
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved