es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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]

View post on imgur.com

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.

Tags:  , , , ,

Answer

  1. Avatar for 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 llamada DataContext que herede de DbContext. Esta clase debe tener una propiedad DbSet 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 archivo Startup.cs utilizando inyección de dependencias. Deberá agregarse como un servicio en el método ConfigureServices, de la siguiente manera:

    services.AddDbContext<datacontext>(options =>
        options.UseInMemoryDatabase("Shop"));
    

    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 clase CategoryController para asegurarse de que la entrada y salida del controlador se formateen correctamente.

    [ApiController]
    [Route("categories")]
    public class CategoryController : ControllerBase
    {
        // métodos del controlador aquí...
    }
    

    Después de realizar estos cambios, intente ejecutar la aplicación nuevamente y verifique si la base de datos en memoria está configurada correctamente.

Comments are closed.