Кажется, что ваш общий маршрут равен /api/Users/api/Users/UpdateRoute
из-за того, как работает RouteAttribute
.
[Route("a")]
public class MyController
{
[Route("a/b")]
public IActionResult MyAction()
{
}
}
Вышеуказанный маршрут будет иметь маршрут /a/a/b
, поскольку маршрут действия добавляется к маршруту контроллера.в этом случае.
Ваши варианты:
- Измените маршрут контроллера на
[Route("[controller]/[action]")]
и удалите маршрут действия, и в этом случае приведенный выше пример станет /MyController/MyAction
- Измените маршрут действия просто на
[Route("b")]
, в этом случае полный маршрут будет a/b
- Используйте абсолютный путь для маршрута действия
[Route("/a/b")]
, и в этом случае маршрут контроллера будетигнорироваться, и полный маршрут будет просто /a/b
.
См. здесь для получения дополнительной информации о маршрутизации.
Что касается вашей проблемы с null
В настоящее время ASP.NET Core ожидает email
и roles
в качестве параметров строки запроса.Вместо этого вы должны создать модель для своего тела запроса:
public class MyModel
{
public string Email { get; set; }
public List<string> Roles { get; set; }
}
и затем изменить свое действие, чтобы принять его:
[HttpPost]
[Route("api/[controller]/UpdateRole")]
public async Task Post([FromBody]MyModel model)
{
}