You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

添加Areas后ASP.NET Core项目报404错误,寻求技术帮助

ASP.NET Core添加Areas后404问题排查与解决

1. 补充根路径默认路由配置

你当前的路由规则仅匹配包含Area的请求路径,根路径/没有对应的路由匹配规则,这是导致404的核心原因之一。需要在Program.cs的端点配置中添加默认路由:

app.UseEndpoints(endpoints =>
{
    // 区域路由规则
    endpoints.MapControllerRoute(
        name: "areas",
        pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}"
    );
    // 根路径默认路由(匹配非Area的请求)
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}"
    );
});

如果你的根路径需要指向某个Area的默认页面(比如Admin的Home/Index),可以修改默认路由的默认值:

endpoints.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}",
    defaults: new { area = "Admin" }
);

2. 验证Area目录结构与特性配置

确保你的项目目录结构完全符合ASP.NET Core的Area约定:

  • 根目录下创建Areas文件夹
  • Areas下分别创建Admin和Customer子文件夹
  • 每个Area子文件夹下必须包含Controllers文件夹,控制器文件放在对应目录中
  • 控制器类上方的[Area]特性名称必须与文件夹名称完全一致(大小写敏感),示例:
[Area("Admin")]
public class HomeController : Controller
{
    // 动作方法
}

3. 检查控制器命名空间

Area下的控制器命名空间必须包含Area名称,比如Admin区域的HomeController命名空间应为YourProjectName.Areas.Admin.Controllers,ASP.NET Core会通过命名空间自动关联控制器与对应Area,避免路由匹配失败。

4. 确认中间件顺序

Program.cs中的中间件顺序直接影响路由功能,必须保证以下顺序:

app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting(); // 路由中间件必须在UseEndpoints之前
app.UseAuthorization();

// 端点配置放在最后
app.UseEndpoints(endpoints =>
{
    // 路由规则
});

5. 清理缓存并重启项目

清理项目的bin和obj文件夹,然后重启调试器,避免旧的路由缓存导致配置不生效。

内容的提问来源于stack exchange,提问作者talatt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 00:01:09