ASP.NET Core 6中无Startup类时如何注册MVC服务?
在ASP.NET Core 6+中注册MVC服务与中间件
在ASP.NET Core 6及后续版本中,框架采用了最小API模型,移除了Startup类,所有服务注册和中间件配置都直接在Program.cs文件中完成,替代原Startup类的ConfigureServices和Configure方法。
1. 注册MVC服务
原来在Startup.ConfigureServices中调用的AddMvc(),现在直接通过WebApplicationBuilder的Services属性完成注册:
var builder = WebApplication.CreateBuilder(args); // 注册完整MVC服务(包含控制器、视图、Razor页面等,等同于原AddMvc()) builder.Services.AddMvc(); // 若仅需控制器+视图,可精准注册: // builder.Services.AddControllersWithViews(); // 若仅需API控制器,可使用: // builder.Services.AddControllers();
2. 添加MVC中间件与路由
原来的UseMvcWithDefaultRoute(),现在通过WebApplication实例的端点映射实现:
var app = builder.Build(); // 环境判断(模板默认包含,非必须) if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Home/Error"); app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); // 启用路由(框架默认已集成,显式写出更清晰) app.UseRouting(); app.UseAuthorization(); // 添加默认MVC路由(等同于原UseMvcWithDefaultRoute()) app.MapDefaultControllerRoute(); // 若需自定义路由,可替换为: // app.MapControllerRoute( // name: "default", // pattern: "{controller=Home}/{action=Index}/{id?}"); app.Run();
完整Program.cs示例
var builder = WebApplication.CreateBuilder(args); // 注册MVC服务 builder.Services.AddMvc(); var app = builder.Build(); if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Home/Error"); app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); // 映射默认MVC路由 app.MapDefaultControllerRoute(); app.Run();
内容的提问来源于stack exchange,提问作者Samuel Mbah
相关产品推荐
相关产品推荐

