3

我在 ASP.Net Core 3 中使用 SPA (React) 应用程序。

发生的情况是任何请求都将首先到达后端并允许 .Net 尝试路由它,如果找不到路由,它会返回index.html并假设 SPA 可以处理路由。

大多数时候我对此很满意,但我想知道是否有办法排除任何路由器api/

我发现 index.html 在任何 make-up 上都返回(带有 200)非常烦人api/MadeUp/Request。我不能让它在无效的 api 请求上返回 500,但仍然允许 SPA 管理任何其他请求(即返回 index.html)吗?

4

1 回答 1

9

如果请求uriUseEndpoint()UseSpa()/api

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller}/{action=Index}/{id?}");
});

app.Use((context, next) =>
{
    if(context.Request.Path.StartsWithSegments(new PathString("api")))
    {
        context.Response.StatusCode = StatusCodes.Status404NotFound;
        return Task.CompletedTask;
    }

    return next();
});

app.UseSpa(spa =>
{
    spa.Options.SourcePath = "ClientApp";

    if (env.IsDevelopment())
    {
        spa.UseReactDevelopmentServer(npmScript: "start");
    }
});
于 2019-10-26T07:41:09.760 回答