Запуск двух веб-приложений на одном порту - неправильная маршрутизация

Я начал с одного веб-приложения .NET MVC 4.5, которое содержало некоторую технологию WebAPI. Было принято решение изменить дизайн веб-сайта и перейти к одному независимому веб-приложению API, которое обрабатывает все функции доступа к данным для исходного основного веб-приложения. В рамках этого вопроса исходное основное веб-приложение осталось без изменений, и мы просто пытаемся добавить в решение новый тестовый API-проект (оригинальное основное приложение в настоящее время не использует новый тестовый API-интерфейс). Мне удалось создать новый проект веб-приложения для API, и ни у одного из них не возникло проблем при запуске на независимых портах. Как примечание, это было разработано и протестировано только с использованием IIS Express в Visual Studio Professional 17. Следующее требование - запускать оба приложения на одном и том же порту, но мы сталкиваемся с проблемой маршрутизации.

Сначала краткое объяснение того, как настроены проекты:

  1. Оригинальное основное веб-приложение:

    • виртуальный каталог: ' http: / / localhost: 12345 / '
    • MVC RouteConfig (только одно правило):
      route.MapRoute (
      имя: «По умолчанию»,
      ] url: "{controller} / {action}",
      значения по умолчанию: new {controller = "Home", action = "Index"});
    • WebAPI RouteConfig (только одно правило) :
      config.Routes.MapHttpRoute (
      имя: «ActionApi»,
      routeTemplate: «api / {controller}»);
  2. Приложение API:
    • виртуальный каталог: ' http: // localhost: 12345 / newapi / '
    • Конфигурация маршрута:
      config .Routes.MapHttpRoute (
      name: "DefaultApi",
      routeTemplate: "{controller} / {id}",
      по умолчанию: new {id = RouteParameter.Optional });

Теперь, когда мы начали тестировать эти два приложения на одном и том же порту, e казалось, что все работает правильно, за исключением API в оригинальном основном веб-приложении; все они возвращают ошибку 404 о том, что «не найден ресурс HTTP, соответствующий URI запроса». После некоторого копания кажется, что префикс '/ api /', определенный в исходной конфигурации веб-приложения основного веб-приложения, передается в веб-приложение API. Примером этого является то, что я могу выполнять вызовы маршрута, определенные только в веб-приложении api, с префиксом «/ api /» (вместо «/ newapi /»), но, как уже было сказано, ошибки при попытке правильных маршрутов в исходном Основное приложение, использующее тот же префикс «/ api /».

Для ясности я ожидал или надеялся достичь следующих результатов для каждого маршрута:

' http: // localhost: 12345 / {controller} / {action} ': исходная маршрутизация MVC основного веб-приложения' http: // localhost: 12345 / api / {route} ': маршрутизация конфигурации веб-интерфейса основного веб-приложения' http: // localhost: 12345 / newapi / {route} ': новая маршрутизация конфигурации webapi веб-приложения api

Опять же, первый и третий URL, похоже, работают без проблем; это второй URL, который вызывает мою проблему. Есть кое-что, что я неправильно понимаю в этом процессе, и любые советы будут с благодарностью. Я рад ответить на любые последующие вопросы или предоставить дополнительную информацию. Заранее благодарен за любую помощь!

0
задан TheDirtyJenks 26 June 2019 в 23:11
поделиться