9
respostas

An unhandled exception occurred while processing the request.

Seguindo o curso de API (parte 2), conforme instruções do instrutor. Ao rodar o projeto, a seguinte mensagem de erro estoura na tela:

-> An unhandled exception occurred while processing the request.

(Estava tentando chamar o método de listagem de livros, quando este erro foi gerado).

Complemento do erro:

InvalidOperationException: Unable to resolve service for type 'Alura.ListaLeitura.Persistencia.IRepository`1[Alura.ListaLeitura.Modelos.Livro]' while attempting to activate Alura.ListaLeitura.WebApp.Controllers.HomeController'

Como resolver este problema, para que eu consiga prosseguir com o curso?

9 respostas

Renan, boa tarde. O problema está na injeção de dependências configurada na classe Startup.

Compartilhe aqui o código da classe Startup que está em sua WebApp, por favor.

No aguardo.

public class Startup { public IConfiguration Configuration { get; }

    public Startup(IConfiguration config)
    {
        Configuration = config;
    }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<AuthDbContext>(options => {
            options.UseSqlServer(Configuration.GetConnectionString("AuthDB"));
        });

        services.AddIdentity<Usuario, IdentityRole>(options =>
        {
            options.Password.RequiredLength = 3;
            options.Password.RequireNonAlphanumeric = false;
            options.Password.RequireUppercase = false;
            options.Password.RequireLowercase = false;
        }).AddEntityFrameworkStores<AuthDbContext>();

        services.ConfigureApplicationCookie(options => {
            options.LoginPath = "/Usuario/Login";
        });

        services.AddHttpClient<LivroApiClient>(client => {
            client.BaseAddress = new Uri("http://localhost:6000/api/");
        });

        services.AddMvc(options => {
            options.OutputFormatters.Add(new LivroCsvFormatter());
        }).AddXmlSerializerFormatters();
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseStaticFiles();
        app.UseAuthentication();

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });
    }
}

Nem o conteúdo que baixei da aula está funcionando.

Renan, está faltando no método ConfigureServices() um código para injetar o serviço IRepositorio<Livro>, assim:

services.AddTransient<IRepository<Livro>, RepositorioBaseEF<Livro>>();

De qualquer forma acabei me esquecendo de colocar um link para o código-fonte que iríamos usar no curso. Agradeço o aviso!

Corrigi isso aqui.

Olha Daniel, mesmo adicionando esta linha no código, e rodando o projeto, o erro continua.

Oi, Renan, o mesmo erro?

Já tentou usar o código-fonte que mencionei no link?

Sim, Daniel. Consegui uma versão do curso 1 que está funcionando, e vou recomeçar o curso 2.

O outro erro: An unhandled exception occurred while processing the request. SocketException: Nenhuma conexão pôde ser feita porque a máquina de destino as recusou ativamente System.Net.Http.ConnectHelper.ConnectAsync(string host, int port, CancellationToken cancellationToken)

HttpRequestException: Nenhuma conexão pôde ser feita porque a máquina de destino as recusou ativamente System.Net.Http.ConnectHelper.ConnectAsync(string host, int port, CancellationToken cancellationToken)

Renan, esse erro de conexão recusada acontecendo em que momento da aplicação?

Fala, Renan, conseguiu solucionar seu problema? Dá um feedback pra gente aqui.