Gewusst wie: hinzufügen IHttpContextAccessor in der Startup-Klasse der DI in ASP.NET Core 1.0?

In ASP.NET Core RC 1 ich verwendete den folgenden code zum abrufen des Werts der Kontext (vollständige Adresse auf der Seite). Dann habe ich Sie aufgenommen dieser Wert in der Konfiguration.

public class Startup
{
        public IConfigurationRoot Configuration { get; set; }
        private IHostingEnvironment CurrentEnvironment { get; set; }
        private IHttpContextAccessor HttpContextAccessor { get; set; }
        public Startup(IHostingEnvironment env,
                IHttpContextAccessor httpContextAccessor)
            {                
                var builder = new ConfigurationBuilder()
                    .SetBasePath(env.ContentRootPath)
                    .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                    .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);

                if (env.IsDevelopment())
                {
                    builder.AddUserSecrets();
                }
                builder.AddEnvironmentVariables();
                Configuration = builder.Build();
                CurrentEnvironment = env;
                HttpContextAccessor = httpContextAccessor;
            }
        public void ConfigureServices(IServiceCollection services)
        {
        ...

        services.AddOptions();
        services.Configure<WebAppSettings>(configuration);
        services.Configure<WebAppSettings>(settings =>
        {
            ...
            settings.WebRootPath = CurrentEnvironment.WebRootPath;
            settings.DomainUrl = HttpContextAccessor.HttpContext.Request.Host.ToUriComponent();
        });
        }
   }

Nun machte ich mich um das Projekt zu aktualisieren auf ASP.NET Core 1.0. Aber beim Start der Seite erhalte ich die folgende Fehlermeldung:

System.InvalidOperationException Nicht beheben service für geben
'Microsoft.AspNetCore.Http.IHttpContextAccessor' beim Versuch
aktivieren Sie " MyProject.Start".

in
Microsoft.Extensions.Intern.ConstructorMatcher.CreateInstance(IServiceProvider
provider) bei
Microsoft.Extensions.Intern.ActivatorUtilities.CreateInstance(IServiceProvider
Anbieter Geben instanceType, Object[] parameters) bei
Microsoft.Extensions.Intern.ActivatorUtilities.GetServiceOrCreateInstance(IServiceProvider
Anbieter, Type Type) bei
Microsoft.Extensions.DependencyInjection.ActivatorUtilities.GetServiceOrCreateInstance(IServiceProvider
Anbieter, Type Type) bei
Microsoft.AspNetCore.Hosting.Intern.StartupLoader.LoadMethods(IServiceProvider
services, Geben Sie über den startuptype, string environmentName) bei
Microsoft.AspNetCore.Hosting.<>c__DisplayClass1_0.b__1(IServiceProvider
sp) an
Microsoft.Extensions.DependencyInjection.ServiceLookup.FactoryService.Invoke(ServiceProvider
provider) bei
Microsoft.Extensions.DependencyInjection.ScopedCallSite.Invoke(ServiceProvider
provider) bei
Microsoft.Extensions.DependencyInjection.SingletonCallSite.Invoke(ServiceProvider
provider) bei
Microsoft.Extensions.DependencyInjection.<>c__DisplayClass12_0.b__0(ServiceProvider
provider) bei
Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Type
Diensttyp) bei
Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider
Anbieter Geben Diensttyp) bei
Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider
provider) bei
Microsoft.AspNetCore.Hosting.Intern.WebHost.EnsureStartup() bei
Microsoft.AspNetCore.Hosting.Intern.WebHost.EnsureApplicationServices()
bei Microsoft.AspNetCore.Hosting.Intern.WebHost.BuildApplication()

.NET Framework X64 v4.0.30319.42000 | Microsoft.AspNetCore.Hosting
version 1.0.0-rtm-21431 | Microsoft Windows 6.1.7601 S

Wie bekomme ich die neue version IHttpContextAccessor beim starten der Anwendung?

  • Wenn Sie einen Blick auf die aktuellen änderungen für .Net Core ist, können Sie sehen, dass IHttpContextAccessor ist nicht mehr standardmäßig eingetragen. github.com/aspnet/Hosting/issues/793
  • Vielen Dank für den link.
InformationsquelleAutor Kolya_Net | 2016-07-04
Schreibe einen Kommentar