我在 .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)
{
这里有什么我想念的吗?我还没有找到任何有用的答案......
Edit: 公开回购可用 https://github.com/stijnpiron/DatingApp.git,当克隆并运行它时,我仍然遇到相同的错误......
Edit 2:与此同时,教程涵盖了更多主题,我发现了这一点:
CreatedAtRoute 调用另一个控制器:
return CreatedAtRoute("GetUser",new {Controller="Users",id=createdUser.Id}, userToReturn);
有效,当尝试调用同一控制器内的路由时,它会失败,同样是这样的:
return CreatedAtRoute(nameof(GetMessage), new {Controller = "Messages", id = message.Id}, message);
要在同一控制器中调用此路由:
[HttpGet("{id}", Name = "GetMessage")]
public async Task<IActionResult> GetMessage(int userId, int id)