2016-05-22 12 views
45

için hizmet çözümlenemedi. Asp.net çekirdek RC1 projemi RC2'ye dönüştürmeye başladım ve şimdi IHttpContextAccessor'un çözülmediği bir sorunla karşılaştım.InvalidOperationException: 'Microsoft.AspNetCore.Http.IHttpContextAccessor'

Sadelikten dolayı Visual Studio Template ASP.NET Core Web Application (.Net Framework)'u kullanarak yeni ASP.NET RC2 projesi oluşturdum. Benim için yarattığım HomeController için kurucu ekledim.

public HomeController(IHttpContextAccessor accessor) 
{ 
} 

Ve gelecek hata alırsınız Uygulamayı başlattıktan sonra: benim gerçek uygulamasında

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)

Ben _contextAccessor.HttpContext.Authentication ve _contextAccessor.HttpContext.User erişmek amacıyla kendi hizmet sınıfında IHttpContextAccessor çözmek gerekir. Her şey RC1'de iyi çalışıyor. Öyleyse RC2'de nasıl olabilir? IHttpContextAccessor artık varsayılan olarak yukarı kablolu

cevap

79

, kendinize bunu NET Çekirdek 2.1 itibariyle

services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>(); 
+5

İşe yaradı edilir:

services.AddHttpContextAccessor(); 

Bu eşdeğerdir. Ayrıca services.AddScoped () ' – YuriyP

+2

ile aynı hikaye Uygun kapsamın ne olduğuna dair resmi bir öneri var mı? "Singleton", "Scoped" veya "Transient" olmalı mı? –

+5

Ah burada tartışıldı ve birden çok kişi güvenli bir şekilde 'Singleton' olabileceğini doğruladı. https://github.com/aspnet/Hosting/issues/793 –

3

doğru bir singleton olarak bir IHttpContextAccessor kayıt eklendi bir uzantısı yöntemi yoktur kayıt olmalısınız. Bakınız Add helper to register IHttpContextAccessor #947. senin ConfigureServices() yönteminde aşağıdaki gibi Basitçe ekleyin:

services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>(); 
İlgili konular