218 votes

InvalidOperationException : Impossible de résoudre le service pour type ' Microsoft.AspNetCore.Http.IHttpContextAccessor '

J'ai commencé à convertir mon asp.net core RC1 projet de RC2 et confrontés avec le problème que maintenant IHttpContextAccessorn'est pas résolu.

Pour des raisons de simplicité, j'ai créé de nouveaux ASP.NET RC2 projet à l'aide de Visual Studio Modèle ASP.NET Core Web Application (.Net Framework). Que j'ai ajouté constructeur de HomeController le modèle créé pour moi.

public HomeController(IHttpContextAccessor accessor)
{
}

Et après j'ai commencer l'application je recevoir l'erreur suivante:

InvalidOperationException: Impossible de résoudre un service de type " Microsoft.AspNetCore.Http.IHttpContextAccessor' tout en tentant d'activer " TestNewCore.Les contrôleurs.HomeController'. в Microsoft.Extensions.Interne.ActivatorUtilities.La méthode GetService(IServiceProvider sp, Type de type de, Type de requiredBy, Boolean isDefaultParameterRequired)

Dans mon application, j'ai besoin de résoudre IHttpContextAccessor dans ma propre classe de service pour l'obtention de l'accès à l' _contextAccessor.HttpContext.Authentication et _contextAccessor.HttpContext.User. Everething fonctionne bien en RC1. Alors, comment peut-il supposer pour être dans la RC2?

333voto

Joe Audette Points 15293

IHttpContextAccessor est n’est plus branché vers le haut par défaut, vous devez l’enregistrer vous-même

219voto

Cal279 Points 789

À partir de .NET Core 2.1 il y a une méthode d’extension qui a été ajoutée pour enregistrer correctement un comme un singleton. Voir [Add helper pour vous inscrire IHttpContextAccessor #947](https://github.com/aspnet/HttpAbstractions/pull/947). Il suffit d’ajouter comme suit en votre méthode :

Cela équivaut à :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X