.NET Core教程遇到问题。它是用.NET Core 2.2编写的,但是我想使用当前版本3.0。
这也是我在设置和教程中可以找到的唯一区别。
问题如下: 我有一个带有CreatedAtRoute调用的HttpPost路由,但是找不到它必须的路由。 通过邮递员进行测试时,我总是会收到此错误:
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);
可以正常工作,当尝试在同一控制器内调用路由时,它也会失败,并且与此同时:
return CreatedAtRoute(nameof(GetMessage), new {Controller = "Messages", id = message.Id}, message);
要在同一控制器中调用此路由:
[HttpGet("{id}", Name = "GetMessage")]
public async Task<IActionResult> GetMessage(int userId, int id)
答案 0 :(得分:1)
代替
[HttpGet("{id}", Name = "GetPhoto")]
采用:
[HttpGet("/{id}", Name = "GetPhoto")]
我遇到了同样的错误,我通过在ID之前加上'/'来解决了这个问题。