🔧 WebApplicationBuilder Simplifies Setup
Old Program.cs was cluttered. WebApplicationBuilder is clean, fluent, minimal. Configure services, then build app.
📝 WebApplicationBuilder Example
var builder = WebApplication.CreateBuilder(args); // Add services builder.Services.AddControllers(); builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); builder.Services.AddDbContext(options => options.UseSqlServer(builder.Configuration.GetConnectionString("Default"))); builder.Services.AddScoped (); builder.Services.AddScoped (); builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidIssuer = builder.Configuration["Jwt:Issuer"] }; }); builder.Services.AddCors(options => { options.AddPolicy("AllowAll", policy => { policy.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader(); }); }); var app = builder.Build(); // Configure pipeline app.UseCors("AllowAll"); app.UseAuthentication(); app.UseAuthorization(); app.MapControllers(); app.Run();
🎯 Conditional Configuration
if (builder.Environment.IsDevelopment())
{
builder.Services.AddDatabaseDeveloperPageExceptionFilter();
builder.Services.AddSwaggerGen();
}
else
{
builder.Services.AddApplicationInsightsTelemetry();
}
builder.Services.AddHealthChecks();
builder.Services.AddHttpClient();
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseSwagger();
app.UseSwaggerUI();
}
else
{
app.UseExceptionHandler("/error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.MapHealthChecks("/health");
app.MapControllers();
💡 Benefits
- Clean separation of service registration and app building
- Fluent API for readability
- Built-in dependency injection
- Environment-aware configuration
- Minimal boilerplate
“Old Program.cs was 200 lines of setup. New builder pattern is clean and readable. WebApplicationBuilder is a huge improvement.”
