Пример #1
0
        //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));
        }
Пример #2
0
        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);
        }