当试图访问api时,会显示ASP.NET Core+React-SPA



我正在使用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");
}
});

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

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

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

我通过删除对registerServiceWorker的调用来解决这个问题,该调用默认包含在项目的React/JS部分中。我能够通过使用浏览器开发工具(F12(并选择应用程序选项卡来检查服务工作的存在

最新更新