Как установить патч OData - PullRequest
0 голосов
/ 07 мая 2020

У меня есть веб-служба Api. net core 3.1, в которой я использую OData (V4). У меня есть конечная точка, где каждый запрос через GET METHOD работает нормально, и с той же конечной точкой я могу использовать POST METHOD и вставлять новые записи в базу данных.

Проблема в том, что СПОСОБЫ УДАЛЕНИЯ и ПАТЧА не работают (или, возможно, они работают, но если я пытаюсь использовать обновление или удаление, я всегда получаю ошибку 404 Not Found). Я пытаюсь вызвать их (DELETE, PATCH) из POSTMAN, но получаю ту же ошибку 404, однако методы находятся в контроллере.

MyController:

[ApiController]
[Route("[controller]")]
public class UsersController : ODataController
{
    [HttpGet]
    [EnableQuery()]
    public IEnumerable<User> Get()
    {
        return new Context().Userek;
    }

    [HttpPatch]
    [EnableQuery]
    public async Task<IActionResult> Patch([FromODataUri] int id, Delta<User> user)
    {
        var ctx = new Context();

        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }
        var entity = await ctx.Userek.FindAsync(id);
        if (entity == null)
        {
            return NotFound();
        }
        user.Patch(entity);
        try
        {
            await ctx.SaveChangesAsync();
        }
        catch (DbUpdateConcurrencyException)
        {
            if (id != 23)
            {
                return NotFound();
            }
            else
            {
                throw;
            }
        }
        return Updated(entity);
    }
    public async Task<IActionResult> Delete([FromODataUri] int id)
    {
        var ctx = new Context();

        var user = await ctx.Userek.FindAsync(id);
        if (user == null)
        {
            return NotFound();
        }
        ctx.Userek.Remove(user);
        await ctx.SaveChangesAsync();
        return StatusCode(404);
    }
}

Спасибо за любые помогите!

...