Как добавить IHttpContextAccessor в классе запуска в DI в ASP.NET Core 1.0?
В ASP.NET Core RC 1 я использовал следующий код для получения значения контекста (полный адрес страницы). Затем я записал это значение в конфигурации.
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();
});
}
}
Теперь я начал обновлять проект на ASP.NET Core 1.0. Но при запуске сайта я получаю следующую ошибку:
System.InvalidOperationException Не удалось разрешить службу для типа «Microsoft.AspNetCore.Http.IHttpContextAccessor» при попытке активировать «MyProject.Startup».
в Microsoft.Extensions.Internal.ConstructorMatcher.CreateInstance (поставщик IServiceProvider) в Microsoft.Extensions.Internal.ActivatorUtilities.CreateInstance (поставщик IServiceProvider, параметры типа instanceType, Object []) в Microsoft.Extensions.Internal.ActivatorUtilitiesOGatevice (). Тип type) в Microsoft.Extensions.DependencyInjection.ActivatorUtilities.GetServiceOrCreateInstance (поставщик IServiceProvider, тип Type) в Microsoft.AspNetCore.Hosting.Internal.StartupLoader.LoadMethods (службы IServiceProvider. Microsoft типа <тип_категории_процессов). > c__DisplayClass1_0.b__1 (IServiceProvider sp) в Microsoft.Extensions.DependencyInjection.ServiceLookup.FactoryService.Invoke (поставщик ServiceProvider) в Microsoft. поставщик) в Microsoft.Extens ion.DependencyInjection. <> c__DisplayClass12_0.b__0 (поставщик ServiceProvider) в Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService (Тип serviceType) в Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRedencyerpenservicePerviceNevicePerviceNevicePerviceNevicePerviceNevicePerviceNevicePerviceNevicePerviceNevicePerviceNevicePerviceNevicePerviceNevicePerviceNevicePerviceServicePlayer_Service.PerviceServiceServiceServiceService.Pervice_Service.Pervice_Service.PerviceService_Service_Service_Service_Service_Service.Pervice_Service.Pervice_Service.Pervice_Service.Pervice_Service_Service.Pervice_Service_Service_Service_Service_Service.dll) Руководство пользователя .ServiceProviderServiceExtensions.GetRequiredService (поставщик IServiceProvider) в Microsoft.AspNetCore.Hosting.Internal.WebHost.EnsureStartup () в Майкрософт
.NET Framework X64 v4.0.30319.42000 | Microsoft.AspNetCore.Hosting версия 1.0.0-rtm-21431 | Microsoft Windows 6.1.7601 S
Как получить новую версию IHttpContextAccessor во время запуска приложения?