В соответствии с этим он должен автоматически проходить в IHttpContextAccessor при разрешении зависимости: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/http-context?view=aspnetcore-3.1
У меня это в моем классе Startup:
public class Startup
{
public IConfiguration _configuration { get; }
public Startup(IConfiguration configuration)
{
_configuration = configuration;
}
public void ConfigureServices(IServiceCollection services)
{
services.AddSession();
services.AddSingleton<IConfiguration>(_configuration);
services.AddHttpContextAccessor();
services.AddSingleton<IServerConnectionHelper>(new ServerConnectionHelper(_configuration));
Вот как мой ServerConnectionHelper пытается получить HttpContextAccessor:
public class ServerConnectionHelper : IServerConnectionHelper
{
IConfiguration _configuration;
private readonly HttpContext _httpContext;
public ServerConnectionHelper(IConfiguration configuration, IHttpContextAccessor httpContextAccessor)
{
_configuration = configuration;
_httpContext = httpContextAccessor?.HttpContext;
}
Теперь я понимаю, почему он жалуется на «Нет аргумента, соответствующего обязательному формальному параметру httpContentAccessor, но в Пример от Microsoft также не имеет его.
Пример Microsoft показывает, что он использует AddTransient, но когда я пытаюсь переключиться на него, я не могу понять, как передать контекст в регистрацию для моего ServerConnectionHelper класс.
Есть какие-нибудь эксперты по DI?