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

VS2022运行ASP.NET Core时遇「找不到Index视图」问题求助

解决方案:ASP.NET Core 6 视图找不到+RuntimeCompilation版本兼容问题

一、先搞定RuntimeCompilation版本兼容问题

你的项目是net6.0框架,直接装7.x版本的包肯定不兼容,得装对应6.x系列的稳定版本:

  1. 打开NuGet包管理器,搜Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
  2. 在版本下拉框里选6.x的版本(比如6.0.25,和你本地的.NET 6 SDK版本匹配最好)
  3. 装完之后,在Program.cs里启用运行时编译,同时把重复的服务注册合并:
// 替换原来重复的AddControllersWithViews,合并成一行
builder.Services.AddControllersWithViews()
    .AddApplicationPart(typeof(HomeController).Assembly)
    .AddRazorRuntimeCompilation(); // 启用运行时编译
// 删掉那行重复的builder.Services.AddControllersWithViews();

二、解决视图找不到的问题

1. 先检查视图文件本身

确保你的项目里确实有/Views/Home/Index.cshtml:

  • 文件名拼写要对(比如是Index.cshtml不是index.cshtml,Windows本地不区分,但部署后容易出问题)
  • 右键这个文件看属性:「生成操作」设为Content,「复制到输出目录」设为「如果较新则复制」

2. 修正Program.cs里的配置错误

你的Program.cs有重复注册和中间件顺序问题,改完之后的代码如下:

using SamepleApi;
using System.Reflection;

var builder = WebApplication.CreateBuilder(args);

// 合并服务注册,避免重复
builder.Services.AddRazorPages();
builder.Services.AddControllersWithViews()
    .AddApplicationPart(typeof(HomeController).Assembly)
    .AddRazorRuntimeCompilation();

var app = builder.Build();

// 环境配置
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

// 注意顺序:认证要在授权前面
app.UseAuthentication();
app.UseAuthorization();

// 路由配置留默认的就行,不用重复MapControllers
app.MapRazorPages();
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

关键修正点:

  • 删掉重复的AddControllersWithViews()调用
  • 把UseAuthentication()移到UseAuthorization()前面,这是ASP.NET Core中间件的固定顺序要求
  • 去掉重复的app.MapControllers(),默认路由已经覆盖了控制器的路由规则

3. 如果视图不在默认目录,手动加搜索路径

要是你的视图没放在/Views下面,就在服务注册时加自定义路径:

builder.Services.AddControllersWithViews(options =>
{
    // 比如视图在/MyViews目录下,就加这两行
    options.ViewLocationFormats.Add("/MyViews/{1}/{0}.cshtml");
    options.ViewLocationFormats.Add("/MyViews/Shared/{0}.cshtml");
})
.AddApplicationPart(typeof(HomeController).Assembly)
.AddRazorRuntimeCompilation();

三、最后再检查这两点

  • 确认HomeController的命名空间SamepleApi拼写正确(注意是Sameple还是Sample?你的代码里是SamepleApi,确保项目命名空间和这个一致)
  • 清理项目重新生成:右键项目→清理,再右键→生成,清掉旧的编译缓存

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 02:15:35