Zacząłem konwertować mój główny projekt RC1 asp.net na RC2 i napotkałem problem, że teraz IHttpContextAccessor
nie został rozwiązany.InvalidOperationException: Nie można rozpoznać usługi dla typu "Microsoft.AspNetCore.Http.IHttpContextAccessor"
Dla uproszczenia stworzyłem nowy projekt ASP.NET RC2 przy użyciu szablonu Visual Studio Template ASP.NET Core Web Application (.Net Framework)
. Następnie dodałem konstruktor dla HomeController, który szablon został stworzony dla mnie.
public HomeController(IHttpContextAccessor accessor)
{
}
A potem zacznę aplikację otrzymam kolejny błąd:
InvalidOperationException: Unable to resolve service for type 'Microsoft.AspNetCore.Http.IHttpContextAccessor' while attempting to activate 'TestNewCore.Controllers.HomeController'. в Microsoft.Extensions.Internal.ActivatorUtilities.GetService(IServiceProvider sp, Type type, Type requiredBy, Boolean isDefaultParameterRequired)
W mojej prawdziwej aplikacji muszę rozwiązać IHttpContextAccessor
w moim klasy usługi dla uzyskania dostępu do _contextAccessor.HttpContext.Authentication
i _contextAccessor.HttpContext.User
. Everething działa poprawnie w RC1. Jak więc może być w RC2?
Jest on pracował. Również ta sama historia z 'services.AddScoped()' –
YuriyP
Czy mamy oficjalne zalecenia dotyczące właściwego zakresu? Czy powinien to być "Singleton", "Scoped" lub "Transient"? –
Ah to jest omawiane tutaj, a wiele osób sprawdza, czy bezpiecznie może być "Singleton". https://github.com/aspnet/Hosting/issues/793 –