Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Código não roda depois de adicionar o IHttpContextAccessor

Quando estava na montagem do carrinho eu não consegui fazer o sistema funciona. Eu vinha acompanhando tudo e não entendi porque meu código parou de funcionar. O erro era:

InvalidOperationException: Unable to resolve service for type 'Microsoft.AspNetCore.Http.IHttpContextAccessor' while attempting to activate 'AluraStore.Repositories.PedidoRepository'.

Verifiquei que o vídeo dizia que a injeção era automática, mas pesquisando sobe o erro verifique que teria que adiciona um código no método ConfigurationService:

 public void ConfigureServices(IServiceCollection services)
{
     //Oculto resto do método
     services.AddHttpContextAccessor();
}

Agora pergunto se o que adicionei é necessário ou se talvez tenha algo diferente no meu projeto que não notei.

2 respostas
solução!

Antes da versão .NET Core 2.1 tinha que ser adicionado o singleton:

services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();

Mas a partir da versão 2.1 foi adicionado um método de extensão para registrar corretamente um IHttpContextAccessor como um singleton

services.AddHttpContextAccessor();

Oi José, você tem razão.

O projeto foi criado com a versão ASP.NET Core 2.0. Para a aplicação funcionar na versão ASP.NET Core 2.1, é preciso fazer 4 modificações:

1) Instalar o pacote "Microsoft.AspNetCore.Http"

http://prntscr.com/lbv84b

2) Adicionar uma linha no método ConfigureServices() da classe Startup:

      services.AddHttpContextAccessor();

3) Remover a seguinte linha do arquivo _Layout.cshtml:

@inject Microsoft.ApplicationInsights.AspNetCore.JavaScriptSnippet JavaScriptSnippet

4) Remover a seguinte linha do arquivo _Layout.cshtml:

@Html.Raw(JavaScriptSnippet.FullScript)

Estou criando um documento para orientar os alunos sobre essas alterações necessárias para a versão 2.1.

Obrigado por nos avisar!