CreatedAtRoute не может найти маршрут, соответствующий предоставленным значениям - PullRequest
0 голосов
/ 08 октября 2019

У меня проблема с учебником .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)
{

Есть ли что-то, что я здесь скучаю? Я еще не нашел ни одного полезного ответа ...

Редактировать : публичное репо доступно , при клонировании и запуске этого я получаю ту же ошибку .. .

Редактировать 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)
...