Using ASP.NET Mvc Core I needed to set my development environment to use https, so I added the below to the Main
method in Program.cs:
var host = new WebHostBuilder()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.UseKestrel(cfg => cfg.UseHttps("ssl-dev.pfx", "Password"))
.UseUrls("https://localhost:5000")
.UseApplicationInsights()
.Build();
host.Run();
How can I access the hosting environment here so that I can conditionally set the protocol/port number/certificate?
Ideally, I would just use the CLI to manipulate my hosting environment like so:
dotnet run --server.urls https://localhost:5000 --cert ssl-dev.pfx password
but there doesn't seem to be way to use a certificate from the command line.
Open project properties by right clicking on the project in the solution explorer and select Properties. This will open properties page. Click on Debug tab and you will see Environment Variables as shown below. You may change the value as per your need.
The launchSettings. json file is used to store the configuration information, which describes how to start the ASP.NET Core application, using Visual Studio. The file is used only during the development of the application using Visual Studio. It contains only those settings that required to run the application.
I think the easiest solution is to read the value from the ASPNETCORE_ENVIRONMENT
environment variable and compare it with Environments.Development
:
var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
var isDevelopment = environment == Environments.Development;
[New Answer using ASP 6.0 minimal API]:
If you are using ASP 6.0 minimal API it's very simple by using WebApplication.Environment
:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
if (!app.Environment.IsProduction())
{
// ...
}
app.MapGet("/", () => "Hello World!");
app.Run();
======================================
[Old Answer]
This is my solution (written for ASP.NET Core 2.1):
public static void Main(string[] args)
{
var host = CreateWebHostBuilder(args).Build();
using (var scope = host.Services.CreateScope())
{
var services = scope.ServiceProvider;
var hostingEnvironment = services.GetService<IHostingEnvironment>();
if (!hostingEnvironment.IsProduction())
SeedData.Initialize();
}
host.Run();
}
In .NET core 3.0
using System;
using Microsoft.Extensions.Hosting;
then
var isDevelopment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == Environments.Development;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With