ASP.NET 5.0 MVC 修改启动默认控制器时View找不到报错如何解决
解决方案
按以下步骤逐一排查即可解决问题:
- 检查视图路径拼写与大小写
确认Views目录下的文件夹名称完全匹配控制器前缀UsernameEntry,文件夹内的视图文件名称完全为UserIndex.cshtml,注意开启文件资源管理器的扩展名显示,避免出现UserIndex.cshtml.txt这类隐藏后缀的错误命名。 - 修正视图文件的生成配置
右键UserIndex.cshtml选择「属性」,将生成操作改回默认值Content,复制到输出目录设置为「如果较新则复制」。你之前将其设置为Embedded resource需要额外配置嵌入式视图服务才能生效,未配置的情况下会导致视图查找失败。 - 开启Razor运行时编译(开发环境推荐)
安装NuGet包Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation后,在Startup.cs的ConfigureServices方法中修改服务注册逻辑:
该配置可以让新增的Razor视图被实时识别,无需每次修改后重建项目。services.AddControllersWithViews() .AddRazorRuntimeCompilation(); - 临时指定视图全路径验证
可以先在控制器方法中硬编码视图路径确认文件本身可被访问:
如果该方式可以正常加载视图,说明路由配置本身无问题,问题出在视图查找匹配逻辑,回到前两步检查即可。public ActionResult UserIndex() { return View("~/Views/UsernameEntry/UserIndex.cshtml"); } - 清理项目缓存
右键解决方案选择「清理」,手动删除项目根目录下的bin、obj文件夹后重新生成项目,排除Visual Studio缓存导致的识别异常。
你修改的默认路由配置本身没有问题,完成上述排查后即可正常加载新的默认控制器与视图。
内容的提问来源于stack exchange,提问作者MarkCo
相关产品推荐
相关产品推荐

