Estou com problemas ao itentar pegar os detalhes do livro pela web usando a API como backend. Aparentemente estou tendo algum erro na linha de código Alura.ListaLeitura.WebApp.Controllers.LivroController.Detalhes(int id) in LivroController.cs ( + HttpResponseMessage resposta = await httpClient.GetAsync($"livros/{id}") Pois "HttpRequestException: Nenhuma conexão pôde ser feita porque a máquina de destino as recusou ativamente"
using System.Linq;
using Alura.ListaLeitura.Persistencia;
using Alura.ListaLeitura.Modelos;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using System.Net.Http;
using System.Threading.Tasks;
namespace Alura.ListaLeitura.WebApp.Controllers
{
[Authorize]
public class LivroController : Controller
{
private readonly IRepository<Livro> _repo;
public LivroController(IRepository<Livro> repository)
{
_repo = repository;
}
[HttpGet]
public IActionResult Novo()
{
return View(new LivroUpload());
}
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Novo(LivroUpload model)
{
if (ModelState.IsValid)
{
_repo.Incluir(model.ToLivro());
return RedirectToAction("Index", "Home");
}
return View(model);
}
[HttpGet]
public IActionResult ImagemCapa(int id)
{
byte[] img = _repo.All
.Where(l => l.Id == id)
.Select(l => l.ImagemCapa)
.FirstOrDefault();
if (img != null)
{
return File(img, "image/png");
}
return File("~/images/capas/capa-vazia.png", "image/png");
}
[HttpGet]
public async Task<IActionResult> Detalhes(int id)
{
HttpClient httpClient = new HttpClient();
httpClient.BaseAddress = new System.Uri("http://localhost:6000/api/");
//http://localhost:6000/api/livros/{id}
//http://localhost:6000/api/listasleitura/paraler
//http://localhost:6000/api/livros/{id}/capa
HttpResponseMessage resposta = await httpClient.GetAsync($"livros/{id}");
resposta.EnsureSuccessStatusCode();
var livro = resposta.Content.ReadAsAsync<LivroApi>();
var model = _repo.Find(id);
if (model == null)
{
return NotFound();
}
return View(model.ToUpload());
}
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Detalhes(LivroUpload model)
{
if (ModelState.IsValid)
{
var livro = model.ToLivro();
if (model.Capa == null)
{
livro.ImagemCapa = _repo.All
.Where(l => l.Id == livro.Id)
.Select(l => l.ImagemCapa)
.FirstOrDefault();
}
_repo.Alterar(livro);
return RedirectToAction("Index", "Home");
}
return View(model);
}
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Remover(int id)
{
var model = _repo.Find(id);
if (model == null)
{
return NotFound();
}
_repo.Excluir(model);
return RedirectToAction("Index", "Home");
}
}
}