【问题标题】:API Controller Routing in .NET 6 Doesn't Work Any More.NET 6 中的 API 控制器路由不再起作用
【发布时间】:2021-12-29 18:24:14
【问题描述】:

我正在尝试在 .NET 6 中创建标准 WebAPI 项目。我注意到标准 ApiController 路由没有我喜欢的领先 api 路由。当我添加它时,控制器会中断。它没有给我 404(未找到),它只是给了我那个说我必须启用 javascript 的索引页面。我真的不知道我必须做些什么才能让我的应用程序工作,我可以在我的路线开始处放置api[Route("api/[controller]")]

我尝试以不同的组合将其添加到默认控制器路由图中。我尝试在 Program 类中添加 UseEndpoints 方法。我只是不确定在 6 中有什么不同。

对于那些想要“查看我的代码”的人,我只是使用带有 React 的标准 WebAPI 项目(没有 Redux!)。

【问题讨论】:

  • 我一直在看这个,它似乎是由于涉及 SPA 客户端应用程序造成的。我可以让它与其他未提供服务的 Web API 项目以及 Angular 或 React 前端一起工作。
  • 我决定在使用 react 创建的单独 ReactJS 项目中创建我们的前端,而不是作为 Web API 项目中的 SPA。我喜欢单个项目如何处理没有 COR 的前端和后端,但 COR 并不难,虽然我现在有两个项目,但它们都更轻量级。

标签: asp.net-web-api-routing .net-6.0


【解决方案1】:

检查ClientApp文件夹内的新setupProxy.js文件image description,你需要在代理配置中配置后端路由,我在ASP.NET Core 6.0 with Angular项目模板中遇到了类似的问题,你可以找到更多信息在这里link 1 link 2

【讨论】:

  • 谢谢;似乎就是这样。我发现不仅在控制器 cs 文件和 setupProxy.js 文件之间,而且在从 HTTP 客户端(或只是 Postman)调用端点时,我必须非常小心地匹配字母大小写。我意识到 HTTP 路由大多区分大小写,但我不知道 .NET (Core) 对此如此挑剔。我很高兴我的旧代码可以升级到 .NET6,并且在 8 或更高版本出来时不会卡在 5 上!
  • 我可能会补充一点,我的 B 计划是只为我的前端使用 Azure 静态 WebApps。使用我编写的那种企业应用程序,出于开发/部署的原因,将 SPA 和 API 放在同一个位置很方便,但也许是时候让 .NET 项目严格使用 WebAPI,这至少是您的链接之一家具暗示。 (我承认我没有时间仔细阅读它们)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-29
  • 2022-07-22
  • 2015-06-10
  • 2016-12-14
  • 1970-01-01
相关资源
最近更新 更多