Fermer

mars 19, 2021

Comment obtenir HttpContext ASP.NET Core


Dans cet article, nous allons discuter de ce qu'est HttpContext et comment l'utiliser dans un contrôleur, plus comment l'enregistrer et l'utiliser en service.

Aujourd'hui, nous allons découvrir HttpContext dans .NET Core. Cet article couvre les sujets suivants:

  • Qu'est-ce que HttpContext?
  • Comment accéder à HttpContext dans le contrôleur?
  • Comment accéder à HttpContext en service?
  • Conclusion

Qu'est-ce que HttpContext?

Il tient les informations actuelles sur la requête Http. Il contient des informations telles que l'autorisation, l'authentification, la requête, la réponse, la session, les éléments, les utilisateurs, les formOptions, etc. Chaque requête HTTP crée un nouvel objet de HttpContext avec les informations actuelles.

Comment accéder à HttpContext dans Controller?

Let's voir comment accéder à HttpContext dans un contrôleur. Les contrôleurs exposent la propriété ControllerBase.HttpContext afin que nous puissions accéder directement aux propriétés HttpContext pour la requête Http actuelle. La meilleure pratique consiste à toujours accéder à HttpContext via la DI avec une implémentation par défaut de HttpContextAccessor .

Exemple: L'exemple ci-dessous montre l'accès au HttpContext . ] dans une méthode d'action GET du contrôleur:

 [ HttpGet  ( "/ getDetails" ) ] 
 public   string   GetDetails  () 
 {
    var  result  =   "Method -"   +  HttpContext .  Request .  ] Méthode  +  
                 "Path -"   +  HttpContext .  Request .  Path ; 
    return  result ; 
} 

Résultat: Méthode – GET Path – / getdetails

Comment accéder à HttpContext en service?

Dans ASP.NET Core, si nous devons accéder au HttpContext en service, nous c et à l'aide de l'interface IHttpContextAccessor et de son implémentation par défaut de HttpContextAccessor . Il n'est nécessaire d'ajouter cette dépendance que si nous voulons accéder à HttpContext en service.

Pour utiliser HttpContext en service, nous devons suivre les deux étapes suivantes:

Étape 1: Enregistrez une dépendance à l'aide du conteneur d'injection de dépendances intégré .NET Core comme ci-dessous dans Startup.cs classe de la méthode ConfigureServices :

 public   void   ] ConfigureServices  ( IServiceCollection services ) 
 {
    services .  AddControllers  () ; 
    
    services .  AddHttpContextAccessor  () ; 
    services .  AddTransient  < IUserService  UserService >   () ; 
} [19659031] Étape 2:  Ensuite, injectez le  IHttpContextAccessor  dans le constructeur de service créé et accédez aux propriétés de  HttpContext  comme ci-dessous: 

 namespace  Get_HttpContext_ASP .  NET_Core
 {
     utilisant  Microsoft .  AspNetCore .  Http ; 

     public   class   UserService  :  IUserService
     {
         privé   lecture seule  IHttpContextAccessor _httpContextAccessor ; 

         public   UserService  ( IHttpContextAccessor [1945967]  IHttpContextAccessor [1945967]  IHttpContextAccessor [1945967] httpContext
            _httpContextAccessor  =  httpContextAccessor ; 
        } 

         public   string   GetLoginUserName  () 
         {
             return [1945900hCext _ returnAhttponth .  HttpContext .  User .  Identity .  Name ; 
        } 
    } 
} 

Vous pouvez maintenant accéder à toutes les propriétés de HttpContext en service comme indiqué dans les deux étapes ci-dessus.

Vous pouvez également télécharger cet exemple à partir de ici .

Remarque: Dans .NET, cela a été référencé comme HttpContext.Current, mais cela est déconseillé dans ASP.NET Core (voir ici ).

Conclusion

Dans cet article, nous avons discuté de ce que HttpContext est et comment l'utiliser dans un contrôleur. Après cela, nous avons vu comment s'enregistrer et l'utiliser en service. Si vous avez des suggestions ou des questions concernant cet article, laissez un commentaire ou contactez-moi à l’un des liens de ma biographie.

«Apprenez-le, partagez-le.»




Source link