Asp.net-2.0

如何在不存在控制項的情況下將 ASP.NET“~”應用程序路徑解析到網站根目錄?

  • February 18, 2013

我想從諸如 Global.asax (HttpApplication)、HttpModule、HttpHandler 等非頁面上下文中解析“~/whatever”,但只能找到特定於控制項(和頁面)的此類解析方法。

我認為應用程序應該有足夠的知識能夠將其映射到頁面上下文之外。不?或者至少它對我來說是有意義的,它應該在其他情況下可以解決,無論應用程序根是什麼已知的。

更新:原因是我在 web.configuration 文件中粘貼“~”路徑,並希望從上述非控制場景中解決它們。

**更新 2:**我正在嘗試將它們解析為網站根目錄,例如 Control.Resolve(..) URL 行為,而不是文件系統路徑。

答案是: ASP.Net:在共享/靜態函式中使用 System.Web.UI.Control.ResolveUrl()

string absoluteUrl = VirtualPathUtility.ToAbsolute("~/SomePage.aspx");

您可以通過HttpContext.Current直接訪問對象來做到這一點:

var resolved = HttpContext.Current.Server.MapPath("~/whatever")

需要注意的一點是,HttpContext.Current它只會null在實際請求的上下文中不存在。例如,它在活動中不可用Application_Stop

引用自:https://stackoverflow.com/questions/2589542