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

ASP.NET Core Razor视图发现异常:无法找到_Host.cshtml端点

解决Razor页面_Host.cshtml无法找到的问题

这个问题我之前处理过,核心根源是**ApplicationName被错误绑定到了Core程序集**,而Razor视图引擎正是依赖这个值来定位包含视图的程序集(你的Theme项目是被App引用的,本该以App作为根程序集来扫描)。当你在Core.Warmup.StartAsync()里初始化并启动Host时,框架会自动把当前执行的程序集(也就是Core)设为ApplicationName,这就导致视图引擎完全找不到Theme里的_Host.cshtml了。

几个可行的修复方案

方案1:把预热逻辑迁移到App项目(最推荐)

你已经发现把初始化代码移到App后视图就能正常加载,这是最合理的解决方案:

  • 当从App项目的Program.cs启动Host时,框架会自动将ApplicationName设为App(入口程序集),视图引擎会自动扫描App及其所有引用的程序集,自然就能找到Theme里的页面了。
  • 操作起来也简单:把Core.Warmup.StartAsync()里的Host初始化逻辑全部移到App/Program.cs,直接在入口项目启动Host即可。

方案2:手动强制指定ApplicationName(如果不能迁移逻辑)

如果因为某些原因必须保留Core里的预热逻辑,那可以在构建Host的时候显式指定ApplicationName为App,强制视图引擎用正确的程序集扫描视图:

// 在Core.Warmup.StartAsync()的HostBuilder配置中添加以下代码
.ConfigureServices((context, services) =>
{
    // 配置Razor视图引擎使用App作为根程序集
    services.Configure<RazorViewEngineOptions>(options =>
    {
        options.ApplicationName = "App";
    });
})
// 或者直接在HostBuilder中设置WebHost的ApplicationKey
.UseSetting(WebHostDefaults.ApplicationKey, "App")

方案3:检查项目基础配置

最后再确认两个基础配置,避免踩坑:

  • 确保App项目已经正确引用了Theme项目
  • 检查Theme里的_Host.cshtml文件的生成操作是否设为Content(右键文件→属性→生成操作),只有这样文件才会被包含在程序集中,让视图引擎能找到它。

补充:为什么dotnet run --applicationName App没用?

这个命令参数只是设置应用的显示名称,和Razor视图引擎用来扫描程序集的ApplicationName配置完全是两回事,所以用这个参数根本解决不了视图找不到的问题,必须通过代码或配置文件指定程序集级别的ApplicationName。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 07:27:37