Я создал приложение ASP.NET Core с шаблоном проекта Angular https://docs.microsoft.com/en-US/aspnet/core/client-side/spa/angular?view=aspnetcore-2.1&tabs=visual-studio
Генерируемый выход
При развертывании на IIS базовая ссылка: <base href="/">
И путь к скриптам внутри сгенерированного dist / index.html:
<script type="text/javascript" src="runtime.js"></script>
<script type="text/javascript" src="polyfills.js"></script>
<script type="text/javascript" src="vendor.js"></script>
<script type="text/javascript" src="main.js"></script>
Проблема: 404 ошибки
Однако C # Startup.cs должен правильно указать путь к выходному каталогу
Проект ASP.NET Core должен знать, что эти файлы находятся в каталоге ClientApp/dist
из-за этого кода:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
// In production, the Angular files will be served from this directory
services.AddSpaStaticFiles(configuration =>
{
configuration.RootPath = "ClientApp/dist";
});
}
Почему базовый путь установлен неправильно?
Проект выполняется на IIS, мы видим, что фоновое сообщение инициализации index.html отображается правильно, однако, как показано на рисунке, все ресурсы загружаются в корневой «/» сервера, поэтому они получают 404.
Если я попытаюсь загрузить http://{SERVERIP}/{PROJECTNAMEHERE}/runtime.js, я вижу, что это работает, поэтому я предполагаю, что это, вероятно, только вопрос base href .
Как динамически установить этот базовый href из ASP.NET Core?