Подтвердить что ты не робот

ASP.NET Core CreatedAtRoute Ни один маршрут не соответствует указанным значениям

Используя ASP.NET Core 2.0.0 Web API, я пытаюсь создать контроллер для вставки базы данных. Информация может быть вставлена в базу данных просто отлично, но при возврате CreateAtRoute выбрасывает "InvalidOperationException: маршрут не соответствует указанным значениям". Все, что я нашел в Интернете, говорит о том, что это была ошибка с ранними предварительными версиями ASP.NET Core и с тех пор исправлена, но я не совсем уверен, что с этим делать. Ниже приведен код моего контроллера:

[Produces("application/json")]
[Route("api/page")]
public class PageController : Controller
{
    private IPageDataAccess _pageData; // data access layer

    public PageController(IPageDataAccess pageData)
    {
        _pageData = pageData;
    }

    [HttpGet("{id}", Name = "GetPage")]
    public async Task<IActionResult> Get(int id)
    {
        var result = await _pageData.GetPage(id); // data access call

        if (result == null)
        {
            return NotFound();
        }

        return Ok(result);
    }

    [HttpPost]
    public async Task<IActionResult> Create([FromBody] Page page)
    {
        if (page == null)
        {
            return BadRequest();
        }

        await _pageData.CreatePage(page); // data access call

        // Return HTTP 201 response and add a Location header to response
        // TODO - fix this, currently throws exception 'InvalidOperationException: No route matches the supplied values.'
        return CreatedAtRoute("GetPage", new { PageId = page.PageId }, page);
    }

Может ли кто-нибудь пролить свет на это для меня?

4b9b3361

Ответ 1

Параметры должны соответствовать значениям маршрута предполагаемого действия.

В этом случае вам нужно id, а не PageId

return CreatedAtRoute(
    actionName: "GetPage", 
    routeValues: new { id = page.PageId },
    value: page);