ASP.NET Core 6.0无调试启动后修改cshtml不生效问题求助
解决ASP.NET Core 6.0 Razor视图修改后刷新不生效的问题
以下是几个排查和解决方向:
确认开发环境配置
Razor运行时编译默认仅在Development环境下启用。检查你的项目:- 打开
Properties/launchSettings.json,确保environmentVariables里的ASPNETCORE_ENVIRONMENT值为Development - 如果需要强制在所有环境启用(不推荐生产环境),可以修改服务注册代码:
builder.Services.AddControllersWithViews() .AddRazorRuntimeCompilation(options => { options.FileProviders.Add(new PhysicalFileProvider( Path.Combine(Directory.GetCurrentDirectory(), "Views"))); });
- 打开
检查热重载配置
确保launchSettings里开启了热重载:
打开Properties/launchSettings.json,找到对应的启动配置(比如IISExpress或项目名称),添加或确认"hotReload": true配置项,同时检查"hotReloadProfile": "aspnetcore"是否存在。清理项目缓存
- 右键项目,选择「清理」,然后执行「生成」
- 手动删除项目根目录下的
bin和obj文件夹,再重新生成并启动项目
检查视图文件属性
右键不生效的cshtml文件,选择「属性」:- 确保「复制到输出目录」设置为「如果较新则复制」
- 确保「生成操作」设置为「内容」,而非「嵌入式资源」
验证Program.cs配置顺序
确认AddRazorRuntimeCompilation()是在builder.Build()之前添加的,正确的顺序应该是:var builder = WebApplication.CreateBuilder(args); // 先配置服务 builder.Services.AddControllersWithViews().AddRazorRuntimeCompilation(); var app = builder.Build(); // 再配置中间件等 app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); app.Run();
内容的提问来源于stack exchange,提问作者Lê Trần Phú
相关产品推荐
相关产品推荐

