#azure #deployment #angular7
#azure #развертывание #angular7
Вопрос:
В нашей команде мы разработали приложение angular7 и разместили его в Azure. веб-сайт работает нормально с обновлением или без него, когда URL-адрес имеет видhttp://xyz.azurewebsites.net /. Я могу просматривать страницы, нажимая на ссылки без каких-либо проблем. Например, можно просматривать страницы, подобныеhttp://xyz.azurewebsites.net/page1 , но на этот раз, когда я обновляю / нажимаю ctrl f5 в браузере, отображается: ресурс, который вы ищете, был удален, его имя было изменено или временно недоступен.
Я погуглил и попробовал обойти, как показано ниже:
- Создал файл web.config для перезаписи URL и поместил его в папку src приложения angular, добавил web.config в
«активы»: [ «src / favicon.ico», «src / assets», «src /web.config» ],
внутри файла angular.json, но закончилось в вене.
- Создал файл web.config для перезаписи URL и поместил его в корень приложения angular, добавил web.config в
«активы»: [ «src / favicon.ico», «src / assets», «web.config» ],
внутри файла angular.json, но закончилось в вене.
-
Пробовал размещать / без размещения web.config в папке dist (после создания dist с помощью команды ng build —prod), но все закончилось неудачей.
-
Пробовал с двумя разными содержимым в web.config, как показано ниже:
Первый:
<?xml version="1.0"?> <configuration> <system.webServer> <staticContent> <mimeMap fileExtension=".json" mimeType="application/json" /> <mimeMap fileExtension=".woff" mimeType="application/x-font-woff" /> <mimeMap fileExtension=".woff2" mimeType="font/woff2" /> </staticContent> </system.webServer> <system.webServer> <rewrite> <rules> <rule name="angular cli routes" stopProcessing="true"> <match url=".*" /> <conditions logicalGrouping="MatchAll"> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Rewrite" url="/" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
и второе:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="angular cli routes" stopProcessing="true"> <match url=".*" /> <conditions logicalGrouping="MatchAll"> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Rewrite" url="/" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
Но закончилось в вене.
в моем случае <base href="/">
в index.html как в папке dist, так и в папке src приложения angular. Что еще можно попробовать для решения этой проблемы?
Комментарии:
1. Я не знаком с Azure и как его настроить. Но проблема в том, что ваш веб-сервер не обслуживает ваш index.html в ваших подпрограммах. Вы должны указать своему веб-серверу обслуживать index.html в вашей корневой папке (xyz.azurewebsites.net ) также обслуживать это index.html когда в любых подпрограммах («xyz.azurewebsites.net/subroute » или «xyz.azurewebsites.net/some/depper/subroute «)
Ответ №1:
Наконец-то сработало, я просто поместил web.config в папку src и записал путь к этому файлу в angular.json, как показано ниже:
"assets": [ "src/favicon.ico", "src/assets", "src/web.config" ]
А затем зафиксировано в Azure. Хотя я делал то же самое раньше, но наконец-то это сработало!!!
Спасибо
Комментарии:
1. Примечание: в моей существующей версии angular.json уже были «активы» и первые 2 поля. Мне нужно было только добавить «src / web.config».
2. 1 Это решение сработало для меня, и совет по отладке консоли служб Kudu от overboard182 также очень помог
Ответ №2:
проблема может заключаться в том, что web.config должен находиться в корне папки wwwroot, а не внутри исходного кода приложения angular. вы можете проверить это с помощью расширенных инструментов при просмотре ресурса службы приложений. нажмите go из advanced tools, и это перенаправит вас в службы Kudu. вы можете использовать консоль отладки, чтобы просмотреть все ваши файлы.
Альтернативой является размещение содержимого angular / dist в учетной записи хранилища и использование прокси-сервера Azure function для обработки перенаправлений. Если это соответствует вашим требованиям, здесь есть дополнительная информация:https://markheath.net/post/static-websites-azure-blob-storage-functions-proxies