gpt4 book ai didi

asp.net-mvc - 发布应用程序时的 .Net Core React SPA 路由问题

转载 作者:行者123 更新时间:2023-12-04 13:57:37 25 4
gpt4 key购买 nike

我有一个 .net core 2.2 SPA,前端使用 react。在 react 方面,我只是使用 href 对后端进行 GET 调用。

<a href={`http://localhost:5004/api/Reports?team=${this.state.teamName}&project=${this.state.projectName}`} class="button">Submit</a>

当我从 Visual Studio 调试应用程序时,路由得到正确处理,它调用后端 Controller 并下载一个文件。

当我将应用程序发布为自包含的 exe 时,似乎 react 应用程序正在拦截路由,因此在单击按钮时以及当我尝试直接在浏览器中进行该 api 调用时,它会显示 SPA 回退 url。

我已经尝试从 app.UseMVC 中删除 MapSpaFallbackRoute 部分并传递完整的 URL 和 Partial,无论哪种方式它都不能正确路由到 Controller 。

这是启动中的路由
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller}/{action=Index}/{id?}");

routes.MapSpaFallbackRoute(
name: "spa-fallback",
defaults: new { controller = "Home", action = "Index" });
});

以及 UseSpa 部分
app.UseSpa(spa =>
{
spa.Options.SourcePath = "ClientApp";

if (env.IsDevelopment())
{
spa.UseReactDevelopmentServer(npmScript: "start");
}
});

什么会导致路由在发布与通过 Visual Studio 运行时表现不同?

最佳答案

所以我偶然发现了一个与此非常相似的问题。我正在使用 VS2019 开发 ASP.NET Core/ReactJS 应用程序。在开发时,调用 .NET API 后端一切正常,但是当我部署到生产环境时,在浏览器中导航到 API 调用的路由会导致返回 React 应用程序而不是 API 调用。如果我在浏览器中硬重新加载这些页面,将返回 API 响应,而不是 React 应用程序。
我通过删除默认情况下包含在项目的 React/JS 部分中的对 registerServiceWorker 的调用解决了这个问题。通过使用浏览器开发人员工具 (F12) 并选择“应用程序”选项卡,我能够检查服务工作是否存在。

关于asp.net-mvc - 发布应用程序时的 .Net Core React SPA 路由问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58612226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com