Как указано в заголовке, у меня есть два проекта, которые были созданы независимо друг от друга.1. Проект ASP.NET Core, создаваемый с использованием dotnet new webapi -o TestAPI
2. Проект Angular, созданный с использованием Angular CLI ng new TestAngularApp
Поскольку проект web api является серверной частью для углового проекта, яхочу, чтобы он служил моему угловому приложению.Основываясь на моих исследованиях, ASP.NET Core обслуживает статические файлы: вам нужно создать папку wwwroot
в корневом каталоге вашего веб-проекта API и поместить все содержимое, созданное командой ng build --prod
, в эту wwwroot
папка.
На следующем шаге я не уверен, что мне нужно настроить дальше.До сих пор в моем файле Startup.cs
в методе Configure
я добавил
app.UseDefaultFiles();
app.UseStaticFiles();
Теперь это работает, как и ожидалось, когда я запускаю проект webapi в режиме отладки прямо из Visual Studio,Проблема возникает, когда я хочу опубликовать webapi и локально развернуть его в IIS.
Я запускаю команду dotnet publish -c Release
, и все файлы генерируются в каталоге .../publish
, включая каталог wwwroot
, как и ожидалось..
В IIS я создаю приложение в Default Web Site
и указываю ему каталог .../publish
.
На этом этапе я включил Failed Request Tracing
на уровне сайта.
Когда я просматриваю приложение, мой webapi правильно пытается обработать файл index.html
, но не может загрузить ни один из необходимых ресурсов.
Я попытался добавить правила перезаписи URL как в приложение ThePLeague
, так и в каталог 'wwwroot', расположенный внутри этого приложения, но это не работает.Я проверил, чтобы убедиться, что мой модуль перезаписи url действительно работает и работает.
Мой вопрос: Требуется ли моей webapi какая-либо дополнительная конфигурация для успешного обслуживания файлов Angular?
Нужно ли использовать SpaFallbackException
, UseSpa
, UseSpaStaticFiles
или любой из методов расширения префикса Spa
, чтобы заставить это работать, или двух уже имеющихся у меня методов достаточно?
Спасибо за любую информацию, которую вы можете предоставить.
ОБНОВЛЕНИЕ
После настройки базового URL, как указано в ответе, мои файлы были успешно обработаны,Мой базовый URL был настроен на <base href="/ThePLeague/">
.Однако проблема сейчас в том, что когда я обновляю страницу.Я получаю ошибку 404.У меня есть правила перезаписи URL, которые находятся в том же каталоге, что и веб-интерфейс ASP.NET Core, а НЕ в папке wwwroot
, где находятся все мои статические файлы.Это связано с тем, что при включении Failed Request Tracing Rules
в IIS
журналы не создаются при наличии правил, созданных в папке wwwroot
.
Правила перезаписи URL:
`<system.webServer>
<rewrite>
<rules>
<rule name="test">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" />
</conditions>
<action type="Rewrite" url="wwwroot/index.html" logRewrittenUrl="true" />
</rule>
</rules>
</rewrite>
</system.webServer>`
Журналы трассировки при обновлении страницы: