在 aspnet 核心中獲取應用程序虛擬基本路徑
我知道它位於 中
HttpContext.Request.PathBase,但是我需要它來配置我的 cookie,然後才能擁有任何HttpContext(inStartup.cs)。我的問題:
當 devops 配置應用程序時,他們必須設置兩次路徑。一旦進入 IIS 應用程序(因此託管知道應該提供什麼)和我的 appsettings.json(因此應用程序知道在哪裡設置 cookie - 多個實例可以在伺服器上工作)。我想在 IIS 中配置一次,並將配置傳遞給我的應用程序。
您可以檢查環境變數 ASPNETCORE_APPL_PATH。這是 AspNetCoreModule 提供的變數,以便可以正確設置 PathBase。請參閱https://github.com/aspnet/IISIntegration/blob/df88e322cc5e52db3dbce4060d5bc7db88edb8e4/src/Microsoft.AspNetCore.Server.IISIntegration/WebHostBuilderIISExtensions.cs#L19
這裡有一點混亂需要澄清。
您想在應用程序啟動時知道應用程序虛擬路徑。然而,應用程序虛擬路徑是託管和特定請求的概念,而不是底層應用程序。託管服務使用此虛擬路徑將傳入 url 映射到應用程序根目錄。在 IIS 中,您可以將多個虛擬路徑映射到同一個物理目錄,例如 /myApp1 和 /myApp2 將指向同一個應用程序。您希望在應用程序啟動時獲得哪些路徑?
這實際上就是為什麼
IHostingEnvironment介面沒有提供任何屬性來獲取應用程序虛擬路徑的原因。應用程序處理請求時的另一件事。在這種情況下,請求特定的 URL,並且 ASP.NET 可以在HttpContext.Request.PathBase.您應該重新考慮您的案例並檢查您是否真的需要應用程序虛擬路徑來配置 cookie。可能是XY 問題。如果您對 cookie 配置仍有疑問,請將其表述為一個新問題,並針對您的場景提供具體細節。