Zugriff auf HttpContext in ASP.NET Core: Eine Anleitung
ASP.NET Core unterscheidet sich von seinen Vorgängern durch das Entfernen der praktischen Eigenschaft HttpContext.Current
. In diesem Artikel werden effektive Strategien für den Zugriff auf den aktuellen HTTP-Kontext innerhalb Ihrer ASP.NET Core-Anwendungen beschrieben.
Architektonische Überlegungen und Refactoring
Die Migration von älteren ASP.NET-Versionen erfordert oft eine Umstrukturierung des Codes. Der direkte Zugriff HttpContext
aus separaten Klassenbibliotheken sollte überdacht werden, um die Best Practices von ASP.NET Core beizubehalten.
Verwendung von HttpContext innerhalb von Controllern
Controller bieten direkten Zugriff auf die HttpContext
Eigenschaft:
<code class="language-csharp">public class HomeController : Controller { public IActionResult Index() { MyMethod(HttpContext); // ... other controller logic ... } public void MyMethod(Microsoft.AspNetCore.Http.HttpContext context) { string host = $"{context.Request.Scheme}://{context.Request.Host}"; // ... process HTTP context data ... } }</code>
Zugriff auf HttpContext in Middleware
Benutzerdefinierte Middleware verwendet den Parameter HttpContext
innerhalb ihrer Invoke
-Methode:
<code class="language-csharp">public async Task InvokeAsync(HttpContext context) { // Access and manipulate the HttpContext here... await _next(context); }</code>
IHttpContextAccessor nutzen
Für Klassen, die über die Abhängigkeitsinjektion verwaltet werden, bietet die IHttpContextAccessor
-Schnittstelle eine Lösung:
<code class="language-csharp">public class MyService { private readonly IHttpContextAccessor _httpContextAccessor; public MyService(IHttpContextAccessor httpContextAccessor) { _httpContextAccessor = httpContextAccessor; } public void MyMethod() { var context = _httpContextAccessor.HttpContext; // ... use the HttpContext ... } }</code>
Denken Sie daran, IHttpContextAccessor
in Ihrer ConfigureServices
-Methode innerhalb von Startup.cs
:
<code class="language-csharp">public void ConfigureServices(IServiceCollection services) { services.AddHttpContextAccessor(); // ... other service registrations ... }</code>
Diese Methoden bieten robuste Alternativen zu HttpContext.Current
in ASP.NET Core und gewährleisten einen effizienten und konformen Zugriff auf HTTP-Kontextinformationen.
Das obige ist der detaillierte Inhalt vonWie greife ich nach dem Entfernen von HttpContext.Current auf HttpContext in ASP.NET Core zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!