コード例 #1
0
ファイル: Program.cs プロジェクト: tknl45/checkin
        private static void setting(IWebHostBuilder webBuilder)
        {
            string[] urls = { "http://localhost:8080" };//, "https://localhost:8012" };

            //讀取設定檔
            var configuration = AppSettingsUtility.getInstance().builder.Build();

            var str_urls = configuration["server.urls"];

            if (!String.IsNullOrWhiteSpace(str_urls))
            {
                urls = str_urls.Split(";");
            }
            Console.WriteLine("urls " + urls[0]);

            var str_KeepAliveTimeout      = configuration["KestrelSetting:KeepAliveTimeout"];
            var str_RequestHeadersTimeout = configuration["KestrelSetting:RequestHeadersTimeout"];

            //HTTP持久連線的時間。
            int keepAliveTimeout;

            int.TryParse(str_KeepAliveTimeout, out keepAliveTimeout);
            keepAliveTimeout = (keepAliveTimeout <= 0) ? 2 * 60 : keepAliveTimeout;

            //Server 處理一個封包最長的時間。
            int requestHeadersTimeout = 30;

            int.TryParse(str_RequestHeadersTimeout, out requestHeadersTimeout);
            requestHeadersTimeout = (requestHeadersTimeout <= 0) ? 30 : requestHeadersTimeout;

            System.Console.WriteLine($"keepAliveTimeout:{keepAliveTimeout} / requestHeadersTimeout:{requestHeadersTimeout}");
            var runtime = configuration["server.Runtime"];

            if (!String.IsNullOrEmpty(runtime) && runtime != "IIS")
            {
                webBuilder.ConfigureKestrel(serverOptions =>
                {
                    serverOptions.AddServerHeader              = false;
                    serverOptions.Limits.KeepAliveTimeout      = TimeSpan.FromSeconds(keepAliveTimeout);
                    serverOptions.Limits.RequestHeadersTimeout = TimeSpan.FromSeconds(requestHeadersTimeout);
                })
                .UseUrls(urls)
                .UseStartup <Startup>();
            }
            else
            {
                webBuilder.UseStartup <Startup>()
                .UseContentRoot(Directory.GetCurrentDirectory())
                .UseIISIntegration();
            }
        }