Проблема с маршрутизацией при сборке "реакция js" на папку wwwroot моего "asp. net core web api" - PullRequest
0 голосов
/ 24 марта 2020

Информация о приложении

Мое приложение использует asp. net основной веб-API для серверной стороны и React js для клиентской.

Перед публикацией приложения код реакции js создается прямо в папке www root моего веб-API Core asp. net. Это позволяет размещать клиент и API на одном и том же URL.

Мой клиент использует SPA и использует маршрутизацию реакции. При запуске в "localhost: 44362 /" мое основное приложение asp. net перенаправляет пользователя в индексный файл. html в моей папке www-root.

Когда это происходит, клиент начинает использовать пакет activ-router.

Проблема

Допустим, наше текущее местоположение - "localhost: 44362 / dashboard" Когда мы обновляем sh страницу, которую мы находим 't go непосредственно через маршрутизацию реакции, но сначала - ядро ​​asp. net. Это приведет к появлению страницы 404, поскольку сервер не может найти фактическую маршрутизацию.

На самом деле должно произойти следующее: при refre sh страница должна go пройти через индекс. html и после выполнения запроса / dashboard.

То, что я пробовал

Я попытался изменить файл web.config при замене поведения кода ошибки HTTP 404 состояния поведения, чтобы изменить ВыполнениеURL в /index.html, как показано ниже:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <httpErrors errorMode="Custom" existingResponse="Replace">
      <remove statusCode="404" />
      <error statusCode="404" responseMode="ExecuteURL" path="/index.html" />
    </httpErrors>
  </system.webServer>
</configuration>

Примечание. При замене существующей части Response = "Replace" на что-то другое, это решение ломается.

Это работает для обновления, но нарушает обычные сообщения об ошибках

При обращении к этому решению обычный HTTP-ответ будет заменен.

пример:

  • Пользователь вводит неправильный пароль и отправляет запрос на вход в систему
  • Сервер отправляет ответ об ошибке HTTP 400 с телом «неверный пароль»
  • Тело ответа об ошибке заменяется на th e web.config
  • Теперь сервер отправляет только «неверный запрос» вместо «неверного пароля»

Мой вопрос

Есть Есть ли способ заставить маршрутизацию работать, сохраняя при этом правильные сообщения об ошибках?

1 Ответ

1 голос
/ 25 марта 2020

Вы можете попробовать использовать переписывание URL в вашем файле web.config.

То, что вы хотите, - это чтобы все запросы переписывались в '/', поэтому ваше приложение реакции будет загружено в , и маршрутизация реакции может вступить во владение. Тем не менее, поскольку вы используете API на том же сервере, вам необходимо исключить запросы, предназначенные для вашего API. (в этом случае я предполагаю, что каждая конечная точка API будет начинаться с '/ api', так как вы используете asp. net core)

Вы можете добавить что-то подобное в ваш файл web.config.

<rewrite>
  <rules>
    <rule name="Redirect to react">
      <match url="^(!?(api\/))(.*)$"/>
      <action type="Rewrite" url="/" />
    </rule>
  </rules>
</rewrite>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...