将 Angular 应用程序迁移到 NET 6 时区域不起作用

Areas do not work when migrating an Angular app to NET 6

我有一个带有 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 调用 return 404。

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

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

但还是没有运气。

编辑:

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

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

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

由于代理,您必须列出 proxy.conf.js 中的所有区域 PROXY_CONFIG。添加区域,或者如果您使用控制器,请将控制器名称添加到 context 属性,例如:

context: ['/AdminApi', '/HomeApi' ... ]

或者,作为解决方法,在所有调用之前添加 /Api,然后在代理设置中只添加