Запуск asp.net и node.js в качестве виртуальных приложений в Azure - PullRequest
0 голосов
/ 21 февраля 2019

В Azure у меня есть служба веб-приложений, на которой я давно работаю, и сервер asp.net.Этот сервер используется в качестве REST-API для мобильного приложения.Теперь я хочу развернуть сайт, который реализован как приложение React.Я обнаружил возможность иметь виртуальные приложения в одном веб-приложении Azure, что, на мой взгляд, прекрасно.

В настоящее время у меня есть два пути с виртуальным путем: «/», ведущий к серверу asp.net, ивиртуальный путь «/ web /», который ведет к папке реакции, как показано на рисунке.Настройка виртуального пути

Virtual Path Setup

Когда я пытаюсь получить доступ к серверу реагирования через браузер, появляется страница с ошибкой asp.net, которая выводит меняполагать, что asp.net обработал мой запрос, а не реагирует на приложение.Если я переключаю виртуальные пути, приложение реагирует на мой запрос независимо от URL-адреса, который я пытаюсь достичь, блокируя сервер asp.net.

Таким образом, веб-приложение может содержать как серверы asp.net, так и узелСерверы .js, но я не могу заставить их работать бок о бок, обрабатывая запросы по разным путям.

Я также пытался добавить / web в ignoreroutes asp.net.

Возможноесть некоторые основы, которые я пропустил, потому что я не могу найти никого с такими же проблемами.Я спрашиваю здесь, потому что я надеялся, что у кого-то были такие же проблемы или какие-то подсказки.Заранее спасибо.

Обновление Если кто-то находится в такой же ситуации, у меня есть другие выводы по этому вопросу.Прежде всего, если я установил Managed Pipeline на Classic, а не на интеграцию в настройках веб-приложения Azure, Ii удалось получить доступ к приложению node.js и приложению asp.net, пока корневой путь указывал на asp.сетевое приложение.Однако это сломало некоторые из моих контроллеров в приложении asp, и если я указал корневой путь к приложению node.js, приложение узла по-прежнему блокирует приложение asp, как и раньше.

Мой временный обходной путь должен был установитьнастройку конвейера на Integrated и разделение двух приложений на / api и / web, где путь по умолчанию '/' указывает на пустой каталог

Solution Так что трудно сказать, чтов прошлый раз был совершенно не прав, но после очистки моих файлов Web.config это удалось решить.

<system.webServer>
    <handlers>
      <add name="iisnode" path="server.js" verb="*" modules="iisnode" />
    </handlers>
    <rewrite>
      <rules>
        <rule name="React Routes" stopProcessing="true">
          <match url=".*" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
          </conditions>
          <action type="Rewrite" url="server.js" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>

Здесь важно правило перезаписи: если оно соответствует / api-шаблону, запрос игнорируется реакцией и пропускается на asp-сервер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...