1 using Microsoft.AspNetCore.Hosting;
2 using Microsoft.AspNetCore.Server.Kestrel.Core;
3 using Microsoft.Extensions.Configuration;
4 using Microsoft.Extensions.DependencyInjection;
5 using Microsoft.Extensions.Hosting;
8 using System.Threading.Tasks;
37 this.assemblyInformationProvider = assemblyInformationProvider ??
throw new ArgumentNullException(nameof(assemblyInformationProvider));
38 IOManager = ioManager ??
throw new ArgumentNullException(nameof(ioManager));
42 public async Task<IServer>
CreateServer(
string[] args,
string updatePath, CancellationToken cancellationToken)
45 throw new ArgumentNullException(nameof(args));
47 IHostBuilder CreateDefaultBuilder() => Microsoft.Extensions.Hosting.Host.CreateDefaultBuilder(args)
48 .ConfigureAppConfiguration((context, configuration) => configuration
50 IOManager.ResolvePath()));
52 var setupWizardHostBuilder = CreateDefaultBuilder()
53 .UseSetupApplication();
56 using (var setupHost = setupWizardHostBuilder.Build())
59 await setupHost.RunAsync(cancellationToken).ConfigureAwait(
false);
62 var hostBuilder = CreateDefaultBuilder()
63 .ConfigureWebHost(webHostBuilder =>
65 .UseKestrel(kestrelOptions =>
67 var serverPortProvider = kestrelOptions.ApplicationServices.GetRequiredService<
IServerPortProvider>();
68 kestrelOptions.ListenAnyIP(
69 serverPortProvider.HttpApiPort,
70 listenOptions => listenOptions.Protocols = HttpProtocols.Http1AndHttp2);
74 .UseApplication(postSetupServices)
75 .SuppressStatusMessages(
true)
76 .UseShutdownTimeout(TimeSpan.FromMinutes(1)));
78 if (updatePath != null)
79 hostBuilder.UseContentRoot(
80 IOManager.ResolvePath(
81 IOManager.GetDirectoryName(assemblyInformationProvider.
Path)));
83 return new Server(hostBuilder, updatePath);
async Task< IServer > CreateServer(string[] args, string updatePath, CancellationToken cancellationToken)
Create a IServer
Use server authentication
Implementation of IServerFactory.
readonly IAssemblyInformationProvider assemblyInformationProvider
The IAssemblyInformationProvider for the ServerFactory.
Set of objects needed to configure an Core.Application.
Interface for using filesystems
Provides access to the server's HttpApiPort.