c# – ASP.NET Core CreatedAtRoute没有路由匹配提供的值

前端之家收集整理的这篇文章主要介绍了c# – ASP.NET Core CreatedAtRoute没有路由匹配提供的值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用ASP.NET Core 2.0.0 Web API,我正在尝试构建一个控制器来进行数据库插入.可以很好地将信息插入数据库,但返回CreatedAtRoute会抛出’InvalidOperationException:No route匹配提供的值.’到目前为止,我在网上找到的所有内容都说这是早期预发布版本的ASP.NET Core的一个错误,并且已经修复,但我不确定该怎么做.以下是我的控制器代码
  1. [Produces("application/json")]
  2. [Route("api/page")]
  3. public class PageController : Controller
  4. {
  5. private IPageDataAccess _pageData; // data access layer
  6.  
  7. public PageController(IPageDataAccess pageData)
  8. {
  9. _pageData = pageData;
  10. }
  11.  
  12. [HttpGet("{id}",Name = "GetPage")]
  13. public async Task<IActionResult> Get(int id)
  14. {
  15. var result = await _pageData.GetPage(id); // data access call
  16.  
  17. if (result == null)
  18. {
  19. return NotFound();
  20. }
  21.  
  22. return Ok(result);
  23. }
  24.  
  25. [HttpPost]
  26. public async Task<IActionResult> Create([FromBody] Page page)
  27. {
  28. if (page == null)
  29. {
  30. return BadRequest();
  31. }
  32.  
  33. await _pageData.CreatePage(page); // data access call
  34.  
  35. // Return HTTP 201 response and add a Location header to response
  36. // TODO - fix this,currently throws exception 'InvalidOperationException: No route matches the supplied values.'
  37. return CreatedAtRoute("GetPage",new { PageId = page.PageId },page);
  38. }

有谁可能为我揭示这一点?

解决方法

参数需要匹配预期动作的路线值.

在这种情况下,您需要id而不是PageId

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

猜你在找的.NET Core相关文章