我在 .NET Core 教程中遇到问题。它是用 .NET Core 2.2 编写的,但我想使用当前版本 3.0。
这也是我在我的设置与教程中发现的唯一区别。
问题如下: 我有一个 HttpPost 路由,其中包含 CreatedAtRoute 调用,但找不到它必须的路由。 通过 Postman 测试时,我总是收到此错误:
System.InvalidOperationException: No route matches the supplied values.
at Microsoft.AspNetCore.Mvc.CreatedAtRouteResult.OnFormatting(ActionContext context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor.ExecuteAsyncCore(ActionContext context, ObjectResult result, Type objectType, Object value)
...
但是当通过调试器检查时,我发现一切正常,除了这一行。所以我要上传的新照片也被添加到Cloudinary并进入数据库。
我调用的电话是:
return CreatedAtRoute("GetPhoto", new {id = photo.Id}, photoToReturn);
这应该在同一个文件中找到这条路线:
[HttpGet("{id}", Name = "GetPhoto")]
public async Task<IActionResult> GetPhoto(int id)
{
这里有什么我想念的吗?我还没有找到任何有用的答案...
编辑:public repo available ,当克隆并运行它时,我仍然遇到相同的错误......
编辑 2:同时,教程涵盖了更多主题,我发现了这一点: CreatedAtRoute 调用另一个 Controller :
return CreatedAtRoute("GetUser",new {Controller="Users",id=createdUser.Id}, userToReturn);
有效,当尝试在同一 Controller 内调用路由时,它会失败,同样是这样的:
return CreatedAtRoute(nameof(GetMessage), new {Controller = "Messages", id = message.Id}, message);
要在同一 Controller 中调用此路由:
[HttpGet("{id}", Name = "GetMessage")]
public async Task<IActionResult> GetMessage(int userId, int id)
最佳答案
而不是
[HttpGet("{id}", Name = "GetPhoto")]
使用:
[HttpGet("/{id}", Name = "GetPhoto")]
我遇到了同样的错误,我通过在 id 之前添加“/”来解决它。
关于.net-core - CreatedAtRoute 找不到与提供的值匹配的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58286013/