Нет транспорта на производственном сервере IIS - PullRequest
0 голосов
/ 08 июня 2018

Во-первых, многие из этих технологий являются новыми для меня, поэтому я прошу прощения за вопрос noob.Кроме того, это мой первый пост в SO (после нескольких лет чтения), поэтому простите за форматирование.

У меня есть веб-приложение, которое я запускаю через MSVS 2017. Я пишу свой интерфейс с React.js,После установки соответствующих пакетов с помощью nuget у меня есть кое-что, что работает, когда я запускаю обе версии: отладочную и выпускную на моей локальной машине разработчика (используя iisexpress).

Однако, после того, как я фиксирую изменения в моем источнике, он получаетприложение на тестовый сервер (IIS) работает нормально.Но файлы JSX, которые возвращаются с тестового сервера, не передаются.Я просто получил сырой файл JSX.Принимая во внимание, что на моем локальном компьютере возвращенный файл передается.

У меня есть файл ReactConfig.cs с одним статическим методом Configure, где у меня есть вызов, чтобы добавить мой JSX-файл через ReactSiteConfiguration.Configuration.AddScript,но это кажется ненужным, потому что я все еще получаю прозрачный результат, даже когда он закомментирован.Вверху моего файла ReactConfig.cs есть что-то похожее на: [assembly: webActivatorEx.PreApplicationStartMethod(typeof(MyApp.Api.Controllers.MyController), "AutoMapperStart")]

Итак, мне остается вопрос о том, как происходит перенос на моем компьютере разработчика, а не на компьютере развертывания.

В моем файле web.config я пробовал оба:

<httpHandlers>
    <add verb="GET" path="*.jsx" type="React.Web.BabelHandlerFactory, React.Web" />
</httpHandlers>

и

<remove name="Babel" /><add name="Babel" verb="GET" path="*.jsx" type="React.Web.BabelHandlerFactory, React.Web" preCondition="integratedMode" /></handlers>

Но ни один из них, похоже, не имеет значения на развернутом сервере.

Если у кого-то есть предложения относительно того, на что мне следует обратить внимание, это будет с благодарностью.

Обновление: я замечаю, что вторым кодом является соответствующий элемент, позволяющий моей среде разработки выполнять транспиляцию.раздел выше в моем файле web.config.Тем не менее, что я не вижу те же строки на сервере.Может быть, файл web.config обычно редактируется вручную при развертывании?

1 Ответ

0 голосов
/ 12 июня 2018

Итак, вот что я в итоге выяснил, что сработало для меня.

Во-первых, да, файл web.config развертывается как шаблон.И затем вручную настраиваемый при необходимости.

Во-вторых, и что более важно, есть две части, чтобы заставить сервер отображать JSX на чистый JS.

  1. Мне нужно было следующее в сети.config файл:
<system.webServer>
    <handlers>
        <remove name="Babel" />
        <add name="Babel" verb="GET" path="*.jsx"
            type="React.Web.BabelHandlerFactory, React.Web"
            preCondition="integratedMode"/>
    </handlers>
</system.webServer>
И, наконец, в разделе Сборка привязки:
  <dependentAssembly>
    <assemblyIdentity name="JavaScriptEngineSwitcher.Core" publicKeyToken="c608b2a8cc9e4472" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.4.9.0" newVersion="2.4.9.0" />
  </dependentAssembly>
...