Maison >développement back-end >C++ >Comment accéder au HttpContext actuel dans ASP.NET Core ?

Comment accéder au HttpContext actuel dans ASP.NET Core ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-23 13:11:10639parcourir

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

Accès à HttpContext dans les applications ASP.NET Core

Contrairement à son prédécesseur, ASP.NET MVC, qui offrait la propriété HttpContext.Current pratique, l'accès au HttpContext actuel dans ASP.NET Core nécessite une approche différente. La méthode d'accès statique direct n'est plus disponible.

La solution : IHttpContextAccessor

ASP.NET Core fournit l'interface IHttpContextAccessor comme solution. En injectant ce service dans vos classes, vous accédez au HttpContext actuel quel que soit le contexte d'exécution.

Exemple illustratif :

Examinons un composant nécessitant des données de session :

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

Ce MyComponent récupère les données de la session de l'utilisateur à l'aide du IHttpContextAccessor injecté. Le HttpContext est accessible et la propriété Session est utilisée pour récupérer la valeur associée à la clé "KEY".

Considérations importantes :

  • Injection de dépendance : IHttpContextAccessor est une dépendance qui doit être injectée dans le constructeur de votre composant.
  • Méthodes d'extension : Tirez parti des HttpContextAccessor méthodes d'extension pour un accès simplifié aux revendications des utilisateurs, aux cookies et au corps de la demande.
  • Contexte statique (à utiliser avec prudence) : L'accès à HttpContext au sein d'une méthode statique nécessite un modèle 'StaticHttpContext'. Cela implique d'initialiser HttpContextAccessor avec le IServiceProvider global. Cependant, cette approche doit être utilisée avec parcimonie en raison de problèmes de concurrence potentiels.

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