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

ASP.NET 取得目前目錄物理路徑的三種方法與最佳實踐

     編輯:ASP.NET 基礎

三種寫法對照

方法程式碼回傳值範例適用情境
1. Request.PhysicalPath 取目錄Path.GetDirectoryName(Request.PhysicalPath)D:\Web\App\Folder\**.aspx/.ascx 程式碼後置**,最直觀
2. HttpContext.Current.Request.MapPathHttpContext.Current.Request.MapPath("~/")D:\Web\App\**非頁面類別** (HttpModule、Service、Helper) 無 Page 實例時
3. Server.MapPathServer.MapPath("/")D:\Web\App\頁面類別中簡寫,等同方法 1 的網站根目錄版

推薦使用方法二

HttpContext.Current.Request.MapPath("~/") 可在**任何有 HttpContext 的執行緒**運作,不綁定 Page 生命週期,單元測試時也易模擬。

進階:取得專案 bin 目錄、特定資料夾

// bin 目錄
string binPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bin");

// App_Data
string appData = HttpContext.Current.Server.MapPath("~/App_Data/");

// 任意虛擬路徑
string uploads = HttpContext.Current.Server.MapPath("~/Uploads/Images/");

注意事項

  • 虛擬路徑以 ~/ 開頭代表應用程式根目錄,`/` 代表網站根目錄(若為虛擬目錄部署則不同)。
  • `Application_Start` 階段 `HttpContext.Current` 為 null,請改用 `HostingEnvironment.MapPath("~/")` 或 `AppDomain.CurrentDomain.BaseDirectory`。
  • .NET Core 使用 `IWebHostEnvironment.ContentRootPath` / `WebRootPath` 取代。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved