如何在.NET Core 3.1 WebAPI中托管Angular应用?

问题描述 投票:3回答:1

我想通过根路径/提供我的Angular应用程序,并通过/api/*提供REST API。对于Angular路由,除了对现有文件(例如媒体文件)的请求和我的API控制器路由之外,我必须将所有请求都重定向到/index.html。

[下面的Startup.cs表示它即将开始工作:

以下内容无效:直接刷新或直接打开http://localhost:5000/home将以404结尾。我想/home未重定向到index.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(); });
    }
}
c# asp.net-core .net-core asp.net-core-webapi single-page-application
1个回答
4
投票

您缺少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)的默认页面来处理中间件链中此刻的所有请求。

此中间件应放在链的后面,以便优先于用于服务静态文件,MVC操作等的其他中间件。

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

© www.soinside.com 2019 - 2024. All rights reserved.