Created
April 16, 2021 20:35
-
-
Save manoj-choudhari-git/fd06e177166ceb7e857fb91d866a384d to your computer and use it in GitHub Desktop.
Environment specific startup classes
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Program.cs | |
public class Program | |
{ | |
public static void Main(string[] args) | |
{ | |
CreateHostBuilder(args).Build().Run(); | |
} | |
public static IHostBuilder CreateHostBuilder(string[] args) | |
{ | |
var assemblyName = typeof(Startup).GetTypeInfo().Assembly.FullName; | |
return Host.CreateDefaultBuilder(args) | |
.ConfigureWebHostDefaults(webBuilder => | |
{ | |
// Notice the UseStartup overload with assemblyName parameter. | |
webBuilder.UseStartup(assemblyName); | |
}); | |
} | |
} | |
// StartupProduction.cs - Production environment startup | |
public class StartupProduction | |
{ | |
public StartupProduction(IConfiguration configuration) | |
{ | |
Configuration = configuration; | |
} | |
public IConfiguration Configuration { get; } | |
// This method gets called by the runtime. Use this method to add services to the container. | |
public void ConfigureServices(IServiceCollection services) | |
{ | |
// Register services required for production environment | |
services.AddControllersWithViews(); | |
} | |
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. | |
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) | |
{ | |
app.UseExceptionHandler("/Home/Error"); | |
app.UseHsts(); | |
app.UseHttpsRedirection(); | |
app.UseStaticFiles(); | |
app.UseRouting(); | |
app.UseAuthorization(); | |
app.UseEndpoints(endpoints => | |
{ | |
endpoints.MapControllerRoute( | |
name: "default", | |
pattern: "{controller=Home}/{action=Index}/{id?}"); | |
}); | |
} | |
} | |
// Startup.cs - for all other environments | |
public class Startup | |
{ | |
private readonly IWebHostEnvironment env; | |
public Startup(IConfiguration configuration, IWebHostEnvironment env) | |
{ | |
Configuration = configuration; | |
this.env = env; | |
} | |
public IConfiguration Configuration { get; } | |
// This method gets called by the runtime. Use this method to add services to the container. | |
public void ConfigureServices(IServiceCollection services) | |
{ | |
if (this.env.IsEnvironment("Security")) | |
{ | |
// Setup services for security environment | |
} | |
else if (this.env.IsDevelopment()) | |
{ | |
// Setup stubs for external services | |
} | |
else | |
{ | |
// Setup services required for other environments | |
} | |
// common services | |
services.AddControllersWithViews(); | |
} | |
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. | |
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) | |
{ | |
if (env.IsDevelopment()) | |
{ | |
app.UseDeveloperExceptionPage(); | |
} | |
else | |
{ | |
app.UseExceptionHandler("/Home/Error"); | |
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. | |
app.UseHsts(); | |
} | |
app.UseHttpsRedirection(); | |
app.UseStaticFiles(); | |
app.UseRouting(); | |
app.UseAuthorization(); | |
app.UseEndpoints(endpoints => | |
{ | |
endpoints.MapControllerRoute( | |
name: "default", | |
pattern: "{controller=Home}/{action=Index}/{id?}"); | |
}); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment