gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 03:54:28 24 4
gpt4 key购买 nike

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

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

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

最佳答案

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

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

关于c# - ASP.NET Core + React - 尝试访问 api 时显示 SPA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60947758/

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