В ASP.Net Core 2.1 с проектом Angular 6 spa я возвращаю нумерованный список пользователей, используя этот метод AccountController.cs:
[HttpGet("users")]
[Produces(typeof(List<UserViewModel>))]
public async Task<IActionResult> GetUsers()
{
return await GetUsers(-1, -1);
}
[HttpGet("users/{page:int}/{pageSize:int}")] <---- conflicts here
[Produces(typeof(List<UserViewModel>))]
public async Task<IActionResult> GetUsers(int page, int pageSize)
{
var users = await _accountManager.GetUsersLoadRelatedAsync(page, pageSize);
return Ok(Mapper.Map<List<UserViewModel>>(users));
}
В файле startup.cs я использую MVC следующим образом:
app.UseMvc(routes =>
{
routes.MapRoute("blog", "blog/{*article}", defaults: new { controller = "Blog", action = "Article" });
routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");
});
Код, как описано выше, работает нормально, но, поскольку я хочу начать использовать Razor Pages в своем проекте, я создал новый стандартный шаблон проекта Razor Pages и добавил его папку Pages в текущий проект, но каккак только я делаю это и запускаю проект, я получаю сообщение об ошибке, если я снова перемещаю папку Pages, проект запускается без ошибок.
Вот описание ошибки:
RouteCreationException: Следующие ошибки произошли с информацией о маршрутизации атрибута:
Для действия: 'MyApiProject.Controllers.AccountController.GetUsers (MyApiProject)'
Ошибка: Атрибут маршрута 'api / Account / users /{page: int} / {pageSize: int} ' не может содержать параметр с именем' {page} '.Используйте '[page]' в шаблоне маршрута, чтобы вставить значение '' .
Код метода не должен быть изменен, так как он отлично работает с существующим Angular spa.Так в чем же обход?