From 747957bb40ce238d2ff72bb8cbf122eb2577c0e8 Mon Sep 17 00:00:00 2001 From: Kahbazi Date: Tue, 28 Jul 2020 02:59:00 +0430 Subject: [PATCH] [Hosting] Move to GenericHost (#24297) --- .../SampleStartups/StartupBlockingOnStart.cs | 19 ++++++--- .../StartupConfigureAddresses.cs | 20 +++++---- .../StartupExternallyControlled.cs | 16 +++++--- .../SampleStartups/StartupFullControl.cs | 41 +++++++++++-------- .../SampleStartups/StartupHelloWorld.cs | 16 +++++--- .../SampleStartups/StartupInjection.cs | 24 +++++++---- 6 files changed, 86 insertions(+), 50 deletions(-) diff --git a/src/Hosting/samples/SampleStartups/StartupBlockingOnStart.cs b/src/Hosting/samples/SampleStartups/StartupBlockingOnStart.cs index dca16710e9..fda2dffae3 100644 --- a/src/Hosting/samples/SampleStartups/StartupBlockingOnStart.cs +++ b/src/Hosting/samples/SampleStartups/StartupBlockingOnStart.cs @@ -1,9 +1,11 @@ using System; +using System.Threading.Tasks; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; // Note that this sample will not run. It is only here to illustrate usage patterns. @@ -27,20 +29,25 @@ namespace SampleStartups } // Entry point for the application. - public static void Main(string[] args) + public static async Task Main(string[] args) { var config = new ConfigurationBuilder().AddCommandLine(args).Build(); - var host = new WebHostBuilder() - .UseConfiguration(config) - .UseKestrel() - .UseStartup() + var host = new HostBuilder() + .ConfigureWebHost(webHostBuilder => + { + webHostBuilder + .UseConfiguration(config) + .UseKestrel() + .UseStartup(); + }) .Build(); using (host) { - host.Start(); + await host.StartAsync(); Console.ReadLine(); + await host.StopAsync(); } } } diff --git a/src/Hosting/samples/SampleStartups/StartupConfigureAddresses.cs b/src/Hosting/samples/SampleStartups/StartupConfigureAddresses.cs index 294497bbf7..123fb56e46 100644 --- a/src/Hosting/samples/SampleStartups/StartupConfigureAddresses.cs +++ b/src/Hosting/samples/SampleStartups/StartupConfigureAddresses.cs @@ -1,7 +1,9 @@ +using System.Threading.Tasks; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Hosting; // Note that this sample will not run. It is only here to illustrate usage patterns. @@ -19,18 +21,22 @@ namespace SampleStartups } // Entry point for the application. - public static void Main(string[] args) + public static Task Main(string[] args) { var config = new ConfigurationBuilder().AddCommandLine(args).Build(); - var host = new WebHostBuilder() - .UseConfiguration(config) - .UseKestrel() - .UseStartup() - .UseUrls("http://localhost:5000", "http://localhost:5001") + var host = new HostBuilder() + .ConfigureWebHost(webHostBuilder => + { + webHostBuilder + .UseConfiguration(config) + .UseKestrel() + .UseStartup() + .UseUrls("http://localhost:5000", "http://localhost:5001"); + }) .Build(); - host.Run(); + return host.RunAsync(); } } } diff --git a/src/Hosting/samples/SampleStartups/StartupExternallyControlled.cs b/src/Hosting/samples/SampleStartups/StartupExternallyControlled.cs index 296fcc0b0f..8a8523bdb9 100644 --- a/src/Hosting/samples/SampleStartups/StartupExternallyControlled.cs +++ b/src/Hosting/samples/SampleStartups/StartupExternallyControlled.cs @@ -4,6 +4,7 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.Hosting; // Note that this sample will not run. It is only here to illustrate usage patterns. @@ -11,7 +12,7 @@ namespace SampleStartups { public class StartupExternallyControlled : StartupBase { - private IWebHost _host; + private IHost _host; private readonly List _urls = new List(); // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. @@ -29,10 +30,15 @@ namespace SampleStartups public void Start() { - _host = new WebHostBuilder() - .UseKestrel() - .UseStartup() - .Start(_urls.ToArray()); + _host = new HostBuilder() + .ConfigureWebHost(webHostBuilder => + { + webHostBuilder + .UseKestrel() + .UseStartup() + .UseUrls(_urls.ToArray()); + }) + .Start(); } public async Task StopAsync() diff --git a/src/Hosting/samples/SampleStartups/StartupFullControl.cs b/src/Hosting/samples/SampleStartups/StartupFullControl.cs index 81a2605557..035efb5d1d 100644 --- a/src/Hosting/samples/SampleStartups/StartupFullControl.cs +++ b/src/Hosting/samples/SampleStartups/StartupFullControl.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using System.Threading.Tasks; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; @@ -13,7 +14,7 @@ namespace SampleStartups { public class StartupFullControl { - public static void Main(string[] args) + public static Task Main(string[] args) { var config = new ConfigurationBuilder() .AddEnvironmentVariables(prefix: "ASPNETCORE_") @@ -21,30 +22,34 @@ namespace SampleStartups .AddCommandLine(args) .Build(); - var host = new WebHostBuilder() - .UseConfiguration(config) // Default set of configurations to use, may be subsequently overridden - .UseKestrel() - .UseContentRoot(Directory.GetCurrentDirectory()) // Override the content root with the current directory - .UseUrls("http://*:1000", "https://*:902") - .UseEnvironment(Environments.Development) - .UseWebRoot("public") + var host = new HostBuilder() + .ConfigureWebHost(webHostBuilder => + { + webHostBuilder + .UseConfiguration(config) // Default set of configurations to use, may be subsequently overridden + .UseKestrel() + .UseContentRoot(Directory.GetCurrentDirectory()) // Override the content root with the current directory + .UseUrls("http://*:1000", "https://*:902") + .UseEnvironment(Environments.Development) + .UseWebRoot("public") + .Configure(app => + { + // Write the application inline, this won't call any startup class in the assembly + + app.Use(next => context => + { + return next(context); + }); + }); + }) .ConfigureServices(services => { // Configure services that the application can see services.AddSingleton(); }) - .Configure(app => - { - // Write the application inline, this won't call any startup class in the assembly - - app.Use(next => context => - { - return next(context); - }); - }) .Build(); - host.Run(); + return host.RunAsync(); } } diff --git a/src/Hosting/samples/SampleStartups/StartupHelloWorld.cs b/src/Hosting/samples/SampleStartups/StartupHelloWorld.cs index a02513d201..0af69a7bd1 100644 --- a/src/Hosting/samples/SampleStartups/StartupHelloWorld.cs +++ b/src/Hosting/samples/SampleStartups/StartupHelloWorld.cs @@ -1,6 +1,8 @@ +using System.Threading.Tasks; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.Hosting; // Note that this sample will not run. It is only here to illustrate usage patterns. @@ -18,14 +20,18 @@ namespace SampleStartups } // Entry point for the application. - public static void Main(string[] args) + public static Task Main(string[] args) { - var host = new WebHostBuilder() - .UseKestrel() - .UseStartup() + var host = new HostBuilder() + .ConfigureWebHost(webHostBuilder => + { + webHostBuilder + .UseKestrel() + .UseStartup(); + }) .Build(); - host.Run(); + return host.RunAsync(); } } } diff --git a/src/Hosting/samples/SampleStartups/StartupInjection.cs b/src/Hosting/samples/SampleStartups/StartupInjection.cs index 163ac165a6..88703a8177 100644 --- a/src/Hosting/samples/SampleStartups/StartupInjection.cs +++ b/src/Hosting/samples/SampleStartups/StartupInjection.cs @@ -1,8 +1,10 @@ using System; +using System.Threading.Tasks; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; // HostingStartup's in the primary assembly are run automatically. [assembly: HostingStartup(typeof(SampleStartups.StartupInjection))] @@ -17,18 +19,22 @@ namespace SampleStartups } // Entry point for the application. - public static void Main(string[] args) + public static Task Main(string[] args) { - var host = new WebHostBuilder() - .UseKestrel() - // Each of these three sets ApplicationName to the current assembly, which is needed in order to - // scan the assembly for HostingStartupAttributes. - // .UseSetting(WebHostDefaults.ApplicationKey, "SampleStartups") - // .Configure(_ => { }) - .UseStartup() + var host = new HostBuilder() + .ConfigureWebHost(webHostBuilder => + { + webHostBuilder + .UseKestrel() + // Each of these three sets ApplicationName to the current assembly, which is needed in order to + // scan the assembly for HostingStartupAttributes. + // .UseSetting(WebHostDefaults.ApplicationKey, "SampleStartups") + // .Configure(_ => { }) + .UseStartup(); + }) .Build(); - host.Run(); + return host.RunAsync(); } }