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 或隐身模式强制重新加载页面,它就会起作用。
这种情况发生在本地主机或生产环境中。
所以我偶然发现了一个与此非常相似的问题。我正在使用 VS2019 开发 ASP.NET Core / ReactJS 应用程序。开发时,调用 .NET API 后端方面一切正常,但当我部署到生产环境时,导航到浏览器中 API 调用的路由会导致返回 React 应用程序,而不是 API 调用。如果我在浏览器中对这些页面进行硬重新加载,则将返回 API 响应,而不是 React 应用程序。
我通过删除默认包含在项目的 React / JS 部分中的对 registerServiceWorker 的调用解决了这个问题。我可以使用浏览器开发人员工具 (F12) 并选择“应用程序”选项卡来检查服务工作是否存在。
| 归档时间: |
|
| 查看次数: |
1880 次 |
| 最近记录: |