在 ASP.NET Core 應用程式中存取 HttpContext
與其前身 ASP.NET MVC 不同,ASP.NET MVC 提供了方便的 HttpContext.Current
屬性,存取 ASP.NET Core 中目前的 HttpContext
需要不同的方法。 直接靜態存取方法不再可用。
解:IHttpContextAccessor
ASP.NET Core 提供了 IHttpContextAccessor
介面作為解決方案。 透過將此服務注入到您的類別中,無論執行上下文如何,您都可以存取當前的 HttpContext
。
範例:
讓我們檢查一個需要會話資料的元件:
<code class="language-csharp">public class MyComponent : IMyComponent { private readonly IHttpContextAccessor _httpContextAccessor; public MyComponent(IHttpContextAccessor httpContextAccessor) { _httpContextAccessor = httpContextAccessor; } public string RetrieveSessionData() { return _httpContextAccessor.HttpContext.Session.GetString("KEY"); } }</code>
此MyComponent
使用注入的IHttpContextAccessor
從使用者會話中擷取資料。 HttpContext
被訪問,Session
屬性用於取得與鍵「KEY」關聯的值。
重要注意事項:
IHttpContextAccessor
是必須注入到元件建構函數中的依賴項。 HttpContextAccessor
擴充方法來簡化對使用者宣告、cookie 和請求正文的存取。 HttpContext
需要「StaticHttpContext」模式。這涉及使用全域 HttpContextAccessor
初始化 IServiceProvider
。 但是,由於潛在的並發問題,應謹慎使用此方法。 以上是ASP.NET Core中如何存取目前的HttpContext?的詳細內容。更多資訊請關注PHP中文網其他相關文章!