22using System . Collections . Generic ;
33using System . IO ;
44using System . Linq ;
5+ using System . Net ;
6+ using System . Security . Cryptography . X509Certificates ;
57using System . Threading . Tasks ;
68using Microsoft . AspNetCore ;
79using Microsoft . AspNetCore . Hosting ;
@@ -14,12 +16,36 @@ public class Program
1416 {
1517 public static void Main ( string [ ] args )
1618 {
17- BuildWebHost ( args ) . Run ( ) ;
18- }
19+ var config = new ConfigurationBuilder ( )
20+ . SetBasePath ( Directory . GetCurrentDirectory ( ) )
21+ . AddEnvironmentVariables ( )
22+ . AddJsonFile ( "certificate.json" , optional : true , reloadOnChange : true )
23+ . AddJsonFile ( "appsettings.json" , optional : false , reloadOnChange : true )
24+ . Build ( ) ;
1925
20- public static IWebHost BuildWebHost ( string [ ] args ) =>
21- WebHost . CreateDefaultBuilder ( args )
26+ var certificateSettings = config . GetSection ( "certificateSettings" ) ;
27+ string certificateFileName = certificateSettings . GetValue < string > ( "filename" ) ;
28+ string certificatePassword = certificateSettings . GetValue < string > ( "password" ) ;
29+
30+ var certificate = new X509Certificate2 ( certificateFileName , certificatePassword ) ;
31+
32+ var host = new WebHostBuilder ( )
33+ . UseKestrel ( options =>
34+ {
35+ options . AddServerHeader = false ;
36+ options . Listen ( IPAddress . Loopback , 44321 ,
37+ listenOptions =>
38+ {
39+ listenOptions . UseHttps ( certificate ) ;
40+ } ) ;
41+ } )
42+ . UseConfiguration ( config )
43+ . UseContentRoot ( Directory . GetCurrentDirectory ( ) )
2244 . UseStartup < Startup > ( )
45+ . UseUrls ( "https://localhost:44321" )
2346 . Build ( ) ;
47+
48+ host . Run ( ) ;
49+ }
2450 }
2551}
0 commit comments