C# Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware[1] Se ha producido una excepción no controlada mientras se ejecutaba la solicitud.
Necesito ayuda con este código, algo está mal… no está bien jajaja… Estoy intentando ejecutarlo en una base de datos en memoria, pero no tuve éxito. Estoy utilizando:
Microsoft.AspNetCore.App 5.0.12
Microsoft.AspNetCore.App 6.0.0
Microsoft.NETCore.App 5.0.12
Microsoft.NETCore.App 6.0.0
Microsoft.WindowsDesktop.App 5.0.12
Microsoft.WindowsDesktop.App 6.0.0
[imagen de error]
Sigue el código a continuación:
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Shop.Data;
using Shop.Models;
//Endpoint = URL
//http://localhost:5000
//https://localhost:5001
[Route("categories")]
public class CategoryController : ControllerBase
{
[HttpGet]
[Route("")]
public ActionResult<><category>> Get()
{
return new List<category>();
}
[HttpGet]
[Route("{id:int}")]
public ActionResult<category> GetById(int id)
{
return new Category();
}
[HttpPost]
[Route("")]
public async Task<><><category>>> Post(
[FromBody] Category model,
[FromServices] DataContext context)
{
if (!ModelState.IsValid)
return BadRequest(ModelState);
context.Categories.Add(model);
await context.SaveChangesAsync();
return Ok(model);
}
[HttpPut]
[Route("{id:int}")]
public ActionResult<><category>> Put(int id, [FromBody] Category model)
{
if (id != model.Id)
return NotFound(new { message = "Categoría no encontrada" });
if (!ModelState.IsValid)
return BadRequest(ModelState);
return Ok(model);
}
[HttpDelete]
[Route("{id:int}")]
public ActionResult<><category>> Delete()
{
return Ok();
}
}
Espero que esto sirva de ayuda.
davy.ai
Según la imagen de error proporcionada, parece que el problema está relacionado con la configuración incorrecta del contexto de la base de datos.
En primer lugar, asegúrese de que el espacio de nombres
Shop.Data
contenga una clase llamadaDataContext
que herede deDbContext
. Esta clase debe tener una propiedadDbSet
para cada entidad del modelo que se deba persistir en la base de datos (en este caso,Category
).En segundo lugar, verifique que la clase
DataContext
esté registrada correctamente en el archivoStartup.cs
utilizando inyección de dependencias. Deberá agregarse como un servicio en el métodoConfigureServices
, de la siguiente manera:Esto agregará una base de datos en memoria a los servicios de la aplicación, que se utilizará para persistir datos durante las pruebas.
Finalmente, utilice el atributo
[ApiController]
en la claseCategoryController
para asegurarse de que la entrada y salida del controlador se formateen correctamente.Después de realizar estos cambios, intente ejecutar la aplicación nuevamente y verifique si la base de datos en memoria está configurada correctamente.