powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Что не так с роутингом?
3 сообщений из 3, страница 1 из 1
Что не так с роутингом?
    #40093889
Abejon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть некий контроллер, объявленный в Areas:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
    [AuthorizeRoles(GroupRole.Admin, GroupRole.Netmanager)]
    [Area("Admin")]
    public class CouncilController : BaseController
    {
       public CouncilController(...)
       {
       ...
       }
 
        public async Task<IActionResult> Index()
        {
            await _councilRepository.UpdateCouncilAsync();
            CouncilCandidatesModel model = new CouncilCandidatesModel();
            model.Candidates = _councilRepository.GetCandidates();
            model.CouncilMembers = _councilRepository.GetMembers();
 
            return View(model);
        }
 
        public async Task<IActionResult> GetCandidates(IDataTablesRequest request)
        {
            if (request.Draw > 1)
            {
                Cache.Set(await UserManager.GetUserIdByClaimsAsync(User), "GetCandidates", Request.Form.ToDictionary(p => p.Key, p => p.Value.ToString()));
            }
 
            return View(_councilRepository.GetCandidates());
        }
 
        public async Task<IActionResult> GetMembers(IDataTablesRequest request)
        {
            if (request.Draw > 1)
            {
                Cache.Set(await UserManager.GetUserIdByClaimsAsync(User), "GetMembers", Request.Form.ToDictionary(p => p.Key, p => p.Value.ToString()));
            }
            return View(_councilRepository.GetMembers());
        }
    }
  }


Когда пытаюсь зайти на страницу http://localhost:44315/Council?area=Admin, то получаю ошибку "Страница не найдена".
Если изменить немного начальную часть, добавив одну строку:
Код: c#
1.
2.
3.
    [AuthorizeRoles(GroupRole.Admin, GroupRole.Netmanager)]
    [Area("Admin")]
    [Route("Admin/[controller]")] // добавленная строка


то получаю такое исключение:

An unhandled exception occurred while processing the request.
AmbiguousActionException: Multiple actions matched. The following actions matched route data and had all constraints satisfied:

BackOffice.Areas.Admin.Controllers.CouncilController.Index (BackOffice)
BackOffice.Areas.Admin.Controllers.CouncilController.GetCand idates (BackOffice)
BackOffice.Areas.Admin.Controllers.CouncilController.GetMemb ers (BackOffice)
Microsoft.AspNetCore.Mvc.Internal.ActionSelector.SelectBestC andidate(RouteContext context, IReadOnlyList<ActionDescriptor> candidates)

AmbiguousActionException: Multiple actions matched. The following actions matched route data and had all constraints satisfied: BackOffice.Areas.Admin.Controllers.CouncilController.Index (BackOffice) BackOffice.Areas.Admin.Controllers.CouncilController.GetCand idates (BackOffice) BackOffice.Areas.Admin.Controllers.CouncilController.GetMemb ers (BackOffice)
Microsoft.AspNetCore.Mvc.Internal.ActionSelector.SelectBestC andidate(RouteContext context, IReadOnlyList<ActionDescriptor> candidates)
Microsoft.AspNetCore.Mvc.Internal.MvcAttributeRouteHandler.R outeAsync(RouteContext context)
Microsoft.AspNetCore.Routing.Tree.TreeRouter.RouteAsync(Rout eContext context)
Microsoft.AspNetCore.Routing.RouteCollection.RouteAsync(Rout eContext context)
Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpCon text httpContext)
Microsoft.AspNetCore.Session.SessionMiddleware.Invoke(HttpCo ntext context)
Microsoft.AspNetCore.Session.SessionMiddleware.Invoke(HttpCo ntext context)
Microsoft.AspNetCore.Authentication.AuthenticationMiddleware .Invoke(HttpContext context)
Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke (HttpContext context)
Microsoft.AspNetCore.Diagnostics.StatusCodePagesMiddleware.I nvoke(HttpContext context)
Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.Migrati onsEndPointMiddleware.Invoke(HttpContext context)
Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.Databas eErrorPageMiddleware.Invoke(HttpContext httpContext)
Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.Databas eErrorPageMiddleware.Invoke(HttpContext httpContext)
Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddl eware.Invoke(HttpContext context)

Если перед методами Get... поставлю атрибут

Код: c#
1.
[HttpPost]

то страница становится доступна, но

Код: c#
1.
@Url.Action("GetCandidates", "Council")


не отрабатывает, как нужно - не присоединяет название метода к адресу и вместо /Admin/Council/GetMembers возвращает /Admin/Council
Самое любопытное, что в тех же Areas есть другой контроллер, написанный до меня, который прекрасно работает!
В чём может быть дело? Где и чего я не дописал?
...
Рейтинг: 0 / 0
Что не так с роутингом?
    #40094423
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Abejon

AmbiguousActionException: Multiple actions matched

не наводит на мысли что не так?
...
Рейтинг: 0 / 0
Что не так с роутингом?
    #40095073
Abejon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, не наводит - методы называются по-разному.
И потом, я ведь написал, что если ставлю атрибут HttpPost, то обращения к методу не происходит.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Что не так с роутингом?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]