Как разместить приложение Angular внутри. NET Core 3.1 WebAPI? - PullRequest
5 голосов
/ 28 мая 2020

Я хочу предоставить свое приложение Angular через root маршрут / и REST API через /api/*. Для маршрутизации Angular я должен перенаправить все запросы в /index.html, кроме запросов на существующие файлы (например, мультимедийные файлы) и маршруты моего контроллера API.

С Startup.cs ниже он близок к работе:

  • Открытие http://localhost: 5000 вернет индекс. html и angular маршрутизация работает, я перенаправляюсь на http://localhost: 5000 / home
  • вызовы API все еще работают
  • Возвращаются существующие файлы CSS / JavaScript

Следующее не работает: обновление или открытие напрямую http://localhost: 5000 / home приведет к 404. Я думаю, /home не перенаправляется на индекс . html. Что мне здесь не хватает?

public class Startup
{
    private readonly IWebHostEnvironment _webHostEnvironment;

    public Startup(IWebHostEnvironment webHostEnvironment)
    {
      _webHostEnvironment = webHostEnvironment;
    }
    public void ConfigureServices(IServiceCollection services)
    {        
      services.AddSpaStaticFiles(options =>
      {
        options.RootPath = "wwwroot";
      });

      services.AddControllers();
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
      app.UseDefaultFiles();
      app.UseSpaStaticFiles();
      app.UseCors();
      app.UseSwagger();
      app.UseSwaggerUI(c => { /*...*/ });
      app.UseRouting();
      app.UseEndpoints(endpoints => { endpoints.MapControllers(); });
    }
}

1 Ответ

6 голосов
/ 28 мая 2020

Вам не хватает одной важной вещи для хостинга SPA:

app.UseSpa(spa =>
{
    // To learn more about options for serving an Angular SPA from ASP.NET Core,
    // see https://go.microsoft.com/fwlink/?linkid=864501
});

Обрабатывает все запросы с этого момента в цепочке промежуточного программного обеспечения, возвращая страницу по умолчанию для одностраничного приложения (SPA).

Это промежуточное ПО должно быть размещено в конце цепочки, чтобы другое промежуточное ПО для обслуживания файлов stati c, MVC действий и т.д. c. Имело приоритет.

- https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.builder.spaapplicationbuilderextensions.usespa

...