【发布时间】:2020-02-24 23:26:00
【问题描述】:
我有一个在前端使用 react 的 .net core 2.2 SPA。在反应方面,我只是使用 href 对后端进行 GET 调用。
<a href={`http://localhost:5004/api/Reports?team=${this.state.teamName}&project=${this.state.projectName}`} class="button">Submit</a>
当我从 Visual Studio 调试应用程序时,路由得到正确处理,它调用后端控制器并下载文件。
当我将应用程序作为自包含的 exe 发布时,react 应用程序似乎正在拦截路由,因此当单击按钮以及尝试直接在浏览器中调用该 api 时,它会显示 SPA Fallback url。
我尝试从 app.UseMVC 中删除 MapSpaFallbackRoute 部分,并传递完整的 URL 和部分,无论哪种方式它都无法正确路由到控制器。
这里是启动中的路由
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 运行时表现不同?
【问题讨论】:
-
检查this问题及其答案。
标签: asp.net-mvc reactjs .net-core single-page-application