//private static readonly (IPAddress address, int port) ListenAddress = (IPAddress.Parse("0.0.0.0"), 5555); //public static void Main(string[] args) //{ // bool isDevelopment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == "Development"; // if (isDevelopment) // { // CertificateHelper.WithCertificate(DevelopmentCertificateThumbprint, cert => // { // CreateAndRunHost(args, cert); // }); // } // else // { // CreateAndRunHost(args, null); // } //} //private static void CreateAndRunHost(string[] args, X509Certificate2 cert) //{ // WebHost.CreateDefaultBuilder(args) // .UseKestrel(options => // options.Listen(ListenAddress.address, ListenAddress.port, // opt => // { // opt.UseHttpsIfCertificateProvided(cert); // })) // .UseStartup() // .Build() // .Run(); //} public static IWebHostBuilder UseKestrelHttpsForDevelopment(this IWebHostBuilder webHostBuilder, X509Certificate2 tlsCertificate = null, HostingUri hostingUri = null) { // Lifetime of certificate, if provided, is assumed to be managed by the caller if (hostingUri == null) { hostingUri = HostingUri.Default(); } if (ShouldUseDefaultCertificate(tlsCertificate)) { tlsCertificate = CertificateHelper.LoadCertificate(DefaultCertificateThumbprint); } if (ShouldHostOnHttp()) { tlsCertificate = null; } Action <KestrelServerOptions> configureKestrel = (options) => { options.Listen(hostingUri.Ip, hostingUri.Port, opt => { opt.UseHttpsIfCertificateProvided(tlsCertificate); }); }; return(webHostBuilder.UseKestrel(configureKestrel)); }
public static HostingUri Default() { var assembly = Assembly.GetEntryAssembly(); var assemblyName = assembly.GetName().Name; var stableNumberDerivedFromName = assemblyName.ToCharArray().Take(1000).Select(c => (decimal)c).Sum(); stableNumberDerivedFromName = stableNumberDerivedFromName * stableNumberDerivedFromName; var port = (int)Math.Abs(stableNumberDerivedFromName) % 65535; var ip = IPAddress.Parse("0.0.0.0"); var url = new HostingUri(ip, port); Console.WriteLine($"Generated hosting url {url.Ip}:{url.Port} from entry assembly name {assemblyName}"); return(url); }