【问题标题】:Areas do not work when migrating an Angular app to NET 6将 Angular 应用程序迁移到 NET 6 时,区域不起作用
【发布时间】:2021-12-25 09:10:48
【问题描述】:

我有一个带有 Angular 应用程序的 .NET Core 5,并且我的控制器按区域分组。我使用 NET Core 1 制作了该应用程序,并成功将其迁移到 5 个而没有任何问题,但是将其迁移到 NET 6 时,我在进行 API 调用时会出现 404 错误。

我当前的 NET 5 设置如下所示:

[Authorize]
[ApiController]    
[Route("[area]/[controller]/[action]")]
public abstract class BaseController : Controller
{
}

[Area("Home")]
public abstract class HomeController : BaseController
{
}

public class AccountController : HomeController
{
    [HttpGet]
    public async Task<IActionResult> GetSomething()
    {
}

我在 VS2022 中新建了一个项目,复制了所有内容,在Program.cs 中进行了更改,并将BaseController 更改为继承ControllerBase

Angular 应用运行正常,但我的所有 API 调用都返回 404。

我什至在 NET 5 应用程序中都没有这个,但我现在添加它以防万一:

app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name : "areas",
            pattern : "{area:exists}/{controller=Home}/{action=Index}/{id?}"
        );
    });

但还是没有运气。

编辑:

使用this 答案,我列出了所有路线并得到了这个:

{area: 'Home', controller: 'Account', action: 'GetSomething', name: null, template: 'Home/Account/GetSomething'}

我仍然不知道为什么它不起作用。

【问题讨论】:

  • 您不必复制任何内容。只需将目标从net5.0 更改为net6.0。您不需要更改基类。 ControllerBase 的工作方式与 .NET 5 中的相同 - 它是 API 和 MVC 控制器的通用基类,不包含任何与视图相关的成员,例如 View()TempData
  • 更改目标框架有效,但在新的 NET 6 项目模板中使用区域无效。这就是我的观点。

标签: c# angular routes .net-6.0


【解决方案1】:

由于代理,您必须列出proxy.conf.js 中的所有区域。希望这会对某人有所帮助。

【讨论】:

    猜你喜欢
    • 2018-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-27
    • 2011-03-22
    • 2022-01-11
    • 2018-07-31
    • 2022-11-20
    相关资源
    最近更新 更多