ASP.NET Core CreatedAtRoute 没有路由与提供的值匹配
ASP.NET Core CreatedAtRoute No route matches the supplied values
使用 ASP.NET Core 2.0.0 Web API,我正在尝试构建一个控制器来执行数据库插入。这些信息可以很好地插入到数据库中,但是返回一个 CreatedAtRoute 会抛出一个 'InvalidOperationException: No route matches the supplied values.' 到目前为止我在网上找到的所有内容都说这是 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);
}
谁能帮我解释一下这个问题?
参数需要与预期操作的路由值相匹配。
在这种情况下,您需要 id
而不是 PageId
return CreatedAtRoute(
actionName: "GetPage",
routeValues: new { id = page.PageId },
value: page);
使用 ASP.NET Core 2.0.0 Web API,我正在尝试构建一个控制器来执行数据库插入。这些信息可以很好地插入到数据库中,但是返回一个 CreatedAtRoute 会抛出一个 'InvalidOperationException: No route matches the supplied values.' 到目前为止我在网上找到的所有内容都说这是 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);
}
谁能帮我解释一下这个问题?
参数需要与预期操作的路由值相匹配。
在这种情况下,您需要 id
而不是 PageId
return CreatedAtRoute(
actionName: "GetPage",
routeValues: new { id = page.PageId },
value: page);