Nano Hash - криптовалюты, майнинг, программирование

config.Routes.MapHttpRoute получает переопределенный веб-API 2.0

Почему мой шаблон маршрута AccessManagement не отображается в MVC Web API 2.

// Web API routes
//config.MapHttpAttributeRoutes();

//Just exclude the users controllers from need to provide valid token, so they could authenticate
config.Routes.MapHttpRoute(
    name: "Authentication",
    routeTemplate: "AccessManagement/",
    defaults: new { controller = "AccessManagement" }
);

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{action}/{id}",
    defaults: new { id = RouteParameter.Optional },
    constraints: null,
    //Create and instance of TokenInspector setting the default inner handler
    handler: new TokenInspector() { 
        InnerHandler = new HttpControllerDispatcher(config) 
    }
);

Мне нужно защитить все мои маршруты с шаблоном api/{controller}/{action}, убедившись, что токен присутствует в заголовке, и только один маршрут отображается без заголовка, который AccessManagement/


  • Первый маршрут не будет соответствовать ничему, кроме www.whatever.com/AccessManagement 16.08.2015
  • Маршрут соответствует api/controller вместо AccessManagement. Однако то, что я ищу, заключается в том, что запрос должен соответствовать обоим форматам. Любое решение 16.08.2015
  • Какой маршрут вы пытаетесь сопоставить? Управление доступом/что угодно? Тогда шаблон должен быть AccessManagement/{*whatever} 16.08.2015
  • http://localhost:49531/AccessManagement/Authenticate завершается с ошибкой 404, а http://localhost:49531/api/AccessManagement/Authenticate достигает точки останова 16.08.2015

Ответы:


1

Как бы то ни было, ваш первый маршрут будет соответствовать только URL-адресу "/AccessManagement" и не будет принимать ничего другого.

Итак, учитывая URL-адрес http://localhost:49531/AccessManagement/Authenticate и предположим, что ваш AccessManagement контроллер имеет действие с именем Authenticate, этот маршрут будет соответствовать URL-адресу:

config.Routes.MapHttpRoute(
    name: "Authentication",
    routeTemplate: "AccessManagement/{action}",
    defaults: new { controller = "AccessManagement" }
);
16.08.2015
  • Это сработало для меня, теперь все работает так, как хотелось. Однако я не понимаю, что происходило раньше. Я понимаю, что шаблон URL-адреса не соответствует, так как я передал действие, а действие не было указано. Есть ли способ просмотреть таблицу маршрутизации на .NET? Также, когда я должен использовать config.MapHttpAttributeRoutes(); 16.08.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..