加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 08:32:00 所属栏目:百科 来源:网络整理
导读:使用ASP.NET Core 2.0.0 Web API,我正在尝试构建一个控制器来进行数据库插入.可以很好地将信息插入数据库,但返回CreatedAtRoute会抛出’InvalidOperationException:No route匹配提供的值.’到目前为止,我在网上找到的所有内容都说这是早期预发布版本的ASP.N
使用ASP.NET Core 2.0.0 Web API,我正在尝试构建一个控制器来进行数据库插入.可以很好地将信息插入数据库,但返回CreatedAtRoute会抛出’InvalidOperationException:No route匹配提供的值.’到目前为止,我在网上找到的所有内容都说这是早期预发布版本的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(
    routeName: "GetPage",routeValues: new { id = page.PageId },value: page);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读