Maison >développement back-end >C++ >Comment accéder à HttpContext dans ASP.NET Core après la suppression de HttpContext.Current ?

Comment accéder à HttpContext dans ASP.NET Core après la suppression de HttpContext.Current ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-19 15:11:09798parcourir

How Do I Access HttpContext in ASP.NET Core After the Removal of HttpContext.Current?

Accès à HttpContext dans ASP.NET Core : un guide

ASP.NET Core s'écarte de ses prédécesseurs en supprimant la propriété HttpContext.Current pratique. Cet article décrit des stratégies efficaces pour accéder au contexte HTTP actuel dans vos applications ASP.NET Core.

Considérations architecturales et refactorisation

La migration à partir d'anciennes versions d'ASP.NET nécessite souvent une restructuration du code. L'accès direct à HttpContext à partir de bibliothèques de classes distinctes doit être reconsidéré pour maintenir les meilleures pratiques d'ASP.NET Core.

Utilisation de HttpContext dans les contrôleurs

Les contrôleurs offrent un accès direct à la HttpContext propriété :

<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>

Accès à HttpContext dans le middleware

Le middleware personnalisé utilise le paramètre HttpContext dans sa méthode Invoke :

<code class="language-csharp">public async Task InvokeAsync(HttpContext context)
{
    // Access and manipulate the HttpContext here...
    await _next(context);
}</code>

Exploiter IHttpContextAccessor

Pour les classes gérées via injection de dépendances, l'interface IHttpContextAccessor apporte une solution :

<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>

Pensez à vous inscrire IHttpContextAccessor dans votre méthode ConfigureServices au sein de Startup.cs :

<code class="language-csharp">public void ConfigureServices(IServiceCollection services)
{
    services.AddHttpContextAccessor();
    // ... other service registrations ...
}</code>

Ces méthodes offrent des alternatives robustes à HttpContext.Current dans ASP.NET Core, garantissant un accès efficace et conforme aux informations de contexte HTTP.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn