首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在ASP.Net Web API中,CreateAtAction返回“没有与提供的值匹配的路由”

在ASP.Net Web API中,CreateAtAction返回“没有与提供的值匹配的路由”
EN

Stack Overflow用户
提问于 2019-05-27 00:49:34
回答 1查看 817关注 0票数 1

我有以下Put方法来更新我的项目:

代码语言:javascript
复制
[HttpPut]
[Route("items")]
public async Task<IActionResult> UpdateProduct([FromBody] CatalogItem productToUpdate)
{
       var catalogItem = await _catalogContext.CatalogItems.SingleOrDefaultAsync(i => i.Id == productToUpdate.Id);
       if (catalogItem == null) return NotFound(new { Message = $"Item with id {productToUpdate.Id} not found." });

       catalogItem = productToUpdate;
       _catalogContext.CatalogItems.Update(catalogItem);
       await _catalogContext.SaveChangesAsync();

       return CreatedAtAction(nameof(GetItemById), new { id = productToUpdate.Id }, productToUpdate);
}

和以下GetItemBy Id操作:

代码语言:javascript
复制
[HttpGet]
[Route("items/{id:int}")]
public async Task<IActionResult> GetItemById(int id)
{
       if (id <= 0)
       {
           return BadRequest();
       }
       var item = await _catalogContext.CatalogItems.SingleOrDefaultAsync(c => c.Id == id);
       if (item != null)
       {

           return Ok(item);
       }
       return NotFound();
}

当我使用此对象通过swagger调用Update操作时:

代码语言:javascript
复制
{
  "id": 42,
  "name": "TestProduct",
  "description": "this is a test",
  "price": 12.55,
  "imageFileName": null,
  "imagePath": null,
  "catalogTypeId": 1,
  "catalogBrandId": 2
}

我得到了这个错误:

应用程序引发了未处理的异常。catalogapi | System.InvalidOperationException:没有与提供的值匹配的路由。

该项目将在数据库中更新,但在执行CreatedAtAction时出现错误。我在POST操作中也遇到了同样的问题。我尝试使用CreatedAtRoute,甚至在没有第三个参数productToUpdate的情况下尝试使用它。我可以毫无问题地调用GetItemById (/api/Catalog/items/42) ...

我是不是遗漏了什么?

EN

回答 1

Stack Overflow用户

发布于 2019-05-27 02:13:27

get能工作吗?如果是,请将put上的路由更改为与get相同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56315539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档