С Новым годом! Форум программистов, компьютерный форум, киберфорум
Web API
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
20 / 19 / 9
Регистрация: 06.02.2015
Сообщений: 382

[Web Api] Как настраивается роутинг?

14.03.2018, 12:24. Показов 1409. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вопрос в том "в какой последовательности сопоставляются роуты и экшины"?
(ветвет хотелось бы слышать в 2х вариантах: как решить мой случай и в стиле ответа на вопрос "как какой последовательности, из каких папок, выбираются вью)

У меня почему-то не работает (работает, но я не понимаю как) роутинг, на Web Api.

вот так он настроен
C#
1
2
3
4
5
6
7
            config.MapHttpAttributeRoutes();
 
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
При обращении по дефолтному варианту api/controller/[verb] - всё окей.
Но если я хочу произвольный роутинг... интерес вопроса в том что если я использую пару атрибутов RoutePrefix и Route то всё будет ОК, но если только второй то в таком случае не сработает!

Конкретнее. Есть контролер User и экшин Logout

При запросе api/user - всё ок
При запросе api/user/logout - не ок. (ну тут то всё понятно)
При запросе api/user/logout и атрибуте Route("logout") - не работает (хотя здесь я ожидал "успеха")
При запросе api/user/logout и атрибуте RoutePrefix("api/user"), и Route("logout") - всё успешно.

Вопрос - почему не сработал 3й пример? (ну и как настроить так что бы RoutePrefix всегда не писать)

Добавлено через 11 часов 20 минут
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.03.2018, 12:24
Ответы с готовыми решениями:

Роутинг web api - ошибка при сопоставлении маршрутов
Добрый день Продолжаю эпопею с роутингом Методы котроллера: public Object Get(int id) { ...

C#, WEB API 2, OWIN. Как осуществить кросдоменную авторизацию?
Добрый день. У меня такая ситуация - есть 2 приложения asp .net web api 2 1. Первое приложение, сугубо для регистрации и авторизации...

Web api Управлять очередью запросов динамически (длиной) и как получить url поступившего в очередь запроса
Я так понимаю, что все запросы приходят в HTTP.Sys откуда запрос в виде HTTP.Context поступает на web api. И все параметры HTTP.Sys нужно...

7
Unnamed
 Аватар для kingzfate
160 / 158 / 81
Регистрация: 09.06.2011
Сообщений: 852
14.03.2018, 13:07
DarkOrk, 2й пример не сработал потому что путь не правильный и программа не знает куда обращаться. RoutePrefix пишется на контроллер 1 штука, не думаю что у вас их миллионы и это так затруднительно, в любом случае это улучшает читаемость пути.
0
20 / 19 / 9
Регистрация: 06.02.2015
Сообщений: 382
14.03.2018, 18:18  [ТС]
kingzfate, 0.0 cc....пасибо....
Цитата Сообщение от kingzfate Посмотреть сообщение
2й пример не сработал потому что путь не правильный и программа не знает куда обращаться.
Цитата Сообщение от DarkOrk Посмотреть сообщение
При запросе api/user/logout - не ок. (ну тут то всё понятно)
Добавлено через 49 секунд
Цитата Сообщение от DarkOrk Посмотреть сообщение
почему не сработал 3й пример?
А как этот вариант прокомментируете?
0
Unnamed
 Аватар для kingzfate
160 / 158 / 81
Регистрация: 09.06.2011
Сообщений: 852
15.03.2018, 07:15
DarkOrk, перепутал, это и был комментарий к 3 примеру
0
20 / 19 / 9
Регистрация: 06.02.2015
Сообщений: 382
15.03.2018, 16:03  [ТС]
Ну ок... а если так...

C#
1
2
3
[HttpPatch]
[Route("~/api/devices/{diviceId}/investigations/{id}/onlyactivestatus")]
public async Task<IHttpActionResult> ModifyInvestigation_onlyActiveStatus(int deviceId, int id)
запрос
PATCH http://localhost:5533/api/devi... tivestatus

и в итоге...
{
"Message": "No HTTP resource was found that matches the request URI 'http://localhost:5533/api/devices/11/investigations/22/onlyactivestatus'.",
"MessageDetail": "No action was found on the controller 'DeviceInvestigations' that matches the request."
}

Есть соображения?

Добавлено через 5 часов 13 минут
0
Unnamed
 Аватар для kingzfate
160 / 158 / 81
Регистрация: 09.06.2011
Сообщений: 852
16.03.2018, 09:45
DarkOrk, ну похоже не может найти DeviceInvestigations в контроллере, вы роут на него дали?
0
.NET senior
 Аватар для bax_tang
441 / 359 / 137
Регистрация: 23.09.2016
Сообщений: 980
17.03.2018, 15:01
DarkOrk, обратите внимание, что в атрибуте Route у Вас указано
Цитата Сообщение от DarkOrk Посмотреть сообщение
~/api/devices/{diviceId}/investigations/{id}/onlyactivestatus
, а имя параметра метода - deviceId.
Насколько мне известно, для корректного сопоставления роута и метода параметры метода и соответствующие им шаблоны подстановки в роуте должны иметь одинаковые имена.
1
20 / 19 / 9
Регистрация: 06.02.2015
Сообщений: 382
19.03.2018, 21:19  [ТС]
bax_tang, да, да... спасибо! Я уже тоже, давно нашёл - это моя ошибка.

В общем, в доках не нашёл, но как практика показала - роут мап с роут атрибутами не считается. И по этому или одними, или другими играться (к сожалению).

Просто, в процессе ковыряния наковырял, в качества бонуса всем интересующимся. Если влепить атрибут Route на экшен (даже без скобок) то эта штука будет говорить что этот экшен типа САМОГО дефолтного, на уровне /Home/Index. Минут 15 не мог понять что это за баг такой... а вот так оказалось.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.03.2018, 21:19
Помогаю со студенческими работами здесь

Производительность Web API
Приветствую. Решил разобраться с Web api. Создал проект. Опубликовал. Все работает, но есть ньюанс: Первое подключение...

Клиент Web Api
Авторизуюсь к web api - следующий запрос выдает не авторизованный доступ, авторизация на сервере реализована с помощью FormAuthentication....

Web API Сервер
Есть сервер. Я знаю его IP адрес, логин и пароль. Как подключиться к серверу используя web api, visual studio и C#? Весь интернет...

Асинхронность в Web API
У меня есть проект, который представляет собой REST API для управлением локальным хранилищем (по сути просто IEnumerable объект) Это...

Авторизация в Web API
Всем привет. Я использую ASp.NET WEB API и делаю авторизацию к нему. По сути мне нужно только логин/пароль и некоторые поля. Ни ролей...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru