ASP.NET Core + React - 尝试访问 api 时显示 SPA

II *_*OWS 5 c# reactjs asp.net-core

我正在使用 Visual Studio 2019 默认项目模板,使用 React+Redux 开发 ASP.NET Core 应用程序。当用户导航到“/”时,SPA 应该运行,但它会显示我在 url 中输入的任何内容,包括带有 GET 动词的 api 端点。

我在启动中添加了一些配置,但基本上是相同的,并且我没有移动任何内容:

if (env.IsDevelopment())
{
    app.UseDeveloperExceptionPage();
}
else
{
    app.UseExceptionHandler("/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseSpaStaticFiles();
app.UseWebSockets();

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

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

    if (env.IsDevelopment())
    {
        spa.UseReactDevelopmentServer(npmScript: "start");
    }
});
Run Code Online (Sandbox Code Playgroud)

我在控制器内有一个 API LinkToUtilsController(用属性装饰[Route("api/[controller]/")]),其目的是获取链接 id 并重定向到外部资源(或返回 HTTP 错误)。端点是http://localhost/api/linktoutils/redirect?linkId=STEP,但是当我从浏览器打开它时,它显示了 ReactJS 应用程序(它甚至不使用路由,也永远不需要它)。奇怪的是,如果我使用 CTRL+F5 或隐身模式强制重新加载页面,它就会起作用。

这种情况发生在本地主机或生产环境中。

Ada*_*vis 3

所以我偶然发现了一个与此非常相似的问题。我正在使用 VS2019 开发 ASP.NET Core / ReactJS 应用程序。开发时,调用 .NET API 后端方面一切正常,但当我部署到生产环境时,导航到浏览器中 API 调用的路由会导致返回 React 应用程序,而不是 API 调用。如果我在浏览器中对这些页面进行硬重新加载,则将返回 API 响应,而不是 React 应用程序。

我通过删除默认包含在项目的 React / JS 部分中的对 registerServiceWorker 的调用解决了这个问题。我可以使用浏览器开发人员工具 (F12) 并选择“应用程序”选项卡来检查服务工作是否存在。