.net-core - CreatedAtRoute 找不到与提供的值匹配的路由

标签 .net-core .net-core-3.0 asp.net-core-3.0

我在 .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/

相关文章:

c# - Rx .NET 中的调度

c# - 通过调用 'IServiceCollection.AddHealthChecks' 添加所有需要的服务

swagger - 是否有 <NonBodyParameter> 等效项

c# - GraphQL 并行异步查询 c# EF Core 3.0

asynchronous - .net core 3.1 中的 ConfigureAwait 警告

grpc - .net core 3.0 grpc 错误状态码=已取消

c# - 自定义库中的 ASP.NET Core 3 : How to reference 3. 0.0 程序集?

c# - 开发存储账户需要身份验证

.net-core - 使用 openiddict 设置登录页面绝对 url 的 SSO

c# - System.Text.Json 中 JObject.FromObject 的对应项是什么