Nie działające kontrolery Get oraz Post

0

Witam tak jak w temacie, nie działają mi kontrolery get oraz post (innych nie sprawdzałem ale pewnie będzie to samo) jest może ktoś wstanie wytłumaczyć dlaczego nie działa ? Dodam że serwer cały czas wywala błąd 500

using System;
using System.Threading.Tasks;
using Portal.Api.BindingModels;
using Portal.Api.Validation;
using Portal.Api.ViewModels;
using Portal.Data.Sql;
using Portal.Data.Sql.DAO;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;

namespace Portal.Api.Controllers
{
    [ApiVersion( "1.0" )]
    [Route( "api/v{version:apiVersion}/[controller]" )]

    public class UserController : Controller
    {
        private readonly PortalDbContext _context;

        public UserController(PortalDbContext context)
        {
            _context = context;
        }
        
        [HttpGet("{userId:min(1)}", Name = "GetUserById")]
        public async Task<IActionResult> GetUserById(int idUser)
        {
            var uzytkownik = await _context.Uzytkownik.FirstOrDefaultAsync(x=>x.IdUser== idUser);

            if (uzytkownik != null)
            {
                return Ok(new UserViewModel
                {
                    Id = uzytkownik.IdUser,
                    IdUser = uzytkownik.IdUser,
                    Name = uzytkownik.Name,
                    LastName = uzytkownik.LastName,
                    Age =  uzytkownik.Age,
                    BirthDate = uzytkownik.BirthDate,
                    Gender = uzytkownik.Gender,
                    Nationality = uzytkownik.Nationality,
                    Login = uzytkownik.Login,
                    Password = uzytkownik.Password,
                    Email = uzytkownik.Email,
                    Couple = uzytkownik.Couple,
                });
            }
            return NotFound();
        }
        
        [HttpGet("name/{userName}", Name = "GetUserByUserName")]
        public async Task<IActionResult> GetUserByUserName(string name)
        {
            var uzytkownik = await _context.Uzytkownik.FirstOrDefaultAsync(x=>x.Name == name);

            if (uzytkownik != null)
            {
                return Ok(new UserViewModel
                {
                    Id = uzytkownik.IdUser,
                    IdUser = uzytkownik.IdUser,
                    Name = uzytkownik.Name,
                    LastName = uzytkownik.LastName,
                    Age =  uzytkownik.Age,
                    BirthDate = uzytkownik.BirthDate,
                    Gender = uzytkownik.Gender,
                    Nationality = uzytkownik.Nationality,
                    Login = uzytkownik.Login,
                    Password = uzytkownik.Password,
                    Email = uzytkownik.Email,
                    Couple = uzytkownik.Couple,
                });
            }
            return NotFound();
        }
        
        [ValidateModel]
//        [Consumes("application/x-www-form-urlencoded")]
//        [HttpPost("create", Name = "CreateUser")]
        public async Task<IActionResult> Post([FromBody] CreateUser createUser)
        {
            var uzytkownik = new Uzytkownik { Email = createUser.Email,
                Name = createUser.Name,
                LastName= createUser.LastName,
                Gender = createUser.Gender,
                BirthDate = createUser.BirthDate,};
            await _context.AddAsync(uzytkownik);
            await _context.SaveChangesAsync();
            
            return Created(uzytkownik.Id.ToString(),new UserViewModel
            {
                IdUser = uzytkownik.IdUser,
                Name = uzytkownik.Name,
                LastName = uzytkownik.LastName,
                Age =  uzytkownik.Age,
                BirthDate = uzytkownik.BirthDate,
                Gender = uzytkownik.Gender,
                Nationality = uzytkownik.Nationality,
                Login = uzytkownik.Login,
                Password = uzytkownik.Password,
                Email = uzytkownik.Email,
                Couple = uzytkownik.Couple,
            }) ;
        }
        
        [ValidateModel]
        [HttpPatch("edit/{userId:min(1)}", Name = "EditUser")]
//        public async Task<IActionResult> EditUser([FromBody] EditUser editUser,[FromQuery] int userId)
        public async Task<IActionResult> EditUser([FromBody] EditUser editUser, int Id)
        {
            var uzytkownik = await _context.Uzytkownik.FirstOrDefaultAsync(x=>x.Id == Id);
            uzytkownik.Name = editUser.Name;
            uzytkownik.Email = editUser.Email;
            uzytkownik.BirthDate = editUser.BirthDate;
            uzytkownik.Gender = editUser.Gender;
            await _context.SaveChangesAsync();
            return NoContent();
            return Ok(new UserViewModel
            {
                IdUser = uzytkownik.IdUser,
                Name = uzytkownik.Name,
                LastName = uzytkownik.LastName,
                Age =  uzytkownik.Age,
                BirthDate = uzytkownik.BirthDate,
                Gender = uzytkownik.Gender,
                Nationality = uzytkownik.Nationality,
                Login = uzytkownik.Login,
                Password = uzytkownik.Password,
                Email = uzytkownik.Email,
                Couple = uzytkownik.Couple,
            });
        }

    }
}
1

Serwer wraz z kodem 500 powinien zwracać wyjątek, a przynajmniej wypisać go w Debugu. Bez tego trudno ustalić, co się dzieje.
Odkomentuj też

[HttpPost("create", Name = "CreateUser")]
0

Tak jak napisał @SkrzydlatyWąż, bez logów będzie ciężko, a w logach najpewniej widnieje przyczyna tego

2

A wg mnie problemy leżą tu:

[HttpGet("name/{userName}", Name = "GetUserByUserName")]
public async Task<IActionResult> GetUserByUserName(string name)

I analogicznie dalej. W atrybucie HttpGet masz zmienną nazwaną userName podczas gdy w parametrze metody masz name. Z tego, co wiem, to one powinny nazywać się tak samo.

1 użytkowników online, w tym zalogowanych: 0, gości: 1