diff options
| -rw-r--r-- | Jellyfin.Server/Program.cs | 37 | ||||
| -rw-r--r-- | Jellyfin.Server/Startup.cs | 16 | ||||
| -rw-r--r-- | tests/Jellyfin.Server.Integration.Tests/JellyfinApplicationFactory.cs | 2 |
3 files changed, 22 insertions, 33 deletions
diff --git a/Jellyfin.Server/Program.cs b/Jellyfin.Server/Program.cs index 7052f4d2b..4725005ae 100644 --- a/Jellyfin.Server/Program.cs +++ b/Jellyfin.Server/Program.cs @@ -6,7 +6,6 @@ using System.IO; using System.Linq; using System.Net; using System.Reflection; -using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Text; using System.Threading; @@ -21,7 +20,6 @@ using Microsoft.AspNetCore.Hosting; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; @@ -186,20 +184,26 @@ namespace Jellyfin.Server try { - var serviceCollection = new ServiceCollection(); - appHost.Init(serviceCollection); - - var webHost = new WebHostBuilder().ConfigureWebHostBuilder(appHost, serviceCollection, options, startupConfig, appPaths).Build(); + var host = Host.CreateDefaultBuilder() + .ConfigureServices(services => + { + // NOTE: Called first to ensure app host configuration is fully initialized + appHost.Init(services); + }) + .ConfigureWebHostDefaults(webHostBuilder => webHostBuilder.ConfigureWebHostBuilder(appHost, startupConfig, appPaths)) + .ConfigureAppConfiguration(config => config.ConfigureAppConfiguration(options, appPaths, startupConfig)) + .UseSerilog() + .Build(); - // Re-use the web host service provider in the app host since ASP.NET doesn't allow a custom service collection. - appHost.ServiceProvider = webHost.Services; + // Re-use the host service provider in the app host since ASP.NET doesn't allow a custom service collection. + appHost.ServiceProvider = host.Services; await appHost.InitializeServices().ConfigureAwait(false); Migrations.MigrationRunner.Run(appHost, _loggerFactory); try { - await webHost.StartAsync(_tokenSource.Token).ConfigureAwait(false); + await host.StartAsync(_tokenSource.Token).ConfigureAwait(false); if (!OperatingSystem.IsWindows() && startupConfig.UseUnixSocket()) { @@ -284,16 +288,12 @@ namespace Jellyfin.Server /// </summary> /// <param name="builder">The builder to configure.</param> /// <param name="appHost">The application host.</param> - /// <param name="serviceCollection">The application service collection.</param> - /// <param name="commandLineOpts">The command line options passed to the application.</param> /// <param name="startupConfig">The application configuration.</param> /// <param name="appPaths">The application paths.</param> /// <returns>The configured web host builder.</returns> public static IWebHostBuilder ConfigureWebHostBuilder( this IWebHostBuilder builder, - ApplicationHost appHost, - IServiceCollection serviceCollection, - StartupOptions commandLineOpts, + CoreAppHost appHost, IConfiguration startupConfig, IApplicationPaths appPaths) { @@ -349,14 +349,7 @@ namespace Jellyfin.Server _logger.LogInformation("Kestrel listening to unix socket {SocketPath}", socketPath); } }) - .ConfigureAppConfiguration(config => config.ConfigureAppConfiguration(commandLineOpts, appPaths, startupConfig)) - .UseSerilog() - .ConfigureServices(services => - { - // Merge the external ServiceCollection into ASP.NET DI - services.Add(serviceCollection); - }) - .UseStartup<Startup>(); + .UseStartup(_ => new Startup(appHost)); } /// <summary> diff --git a/Jellyfin.Server/Startup.cs b/Jellyfin.Server/Startup.cs index 5d6a278c4..5996b3e30 100644 --- a/Jellyfin.Server/Startup.cs +++ b/Jellyfin.Server/Startup.cs @@ -35,20 +35,17 @@ namespace Jellyfin.Server /// </summary> public class Startup { - private readonly IServerConfigurationManager _serverConfigurationManager; private readonly IServerApplicationHost _serverApplicationHost; + private readonly IServerConfigurationManager _serverConfigurationManager; /// <summary> /// Initializes a new instance of the <see cref="Startup" /> class. /// </summary> - /// <param name="serverConfigurationManager">The server configuration manager.</param> - /// <param name="serverApplicationHost">The server application host.</param> - public Startup( - IServerConfigurationManager serverConfigurationManager, - IServerApplicationHost serverApplicationHost) + /// <param name="appHost">The server application host.</param> + public Startup(CoreAppHost appHost) { - _serverConfigurationManager = serverConfigurationManager; - _serverApplicationHost = serverApplicationHost; + _serverApplicationHost = appHost; + _serverConfigurationManager = appHost.ConfigurationManager; } /// <summary> @@ -87,8 +84,7 @@ namespace Jellyfin.Server RequestHeaderEncodingSelector = (_, _) => Encoding.UTF8 }; - services - .AddHttpClient(NamedClient.Default, c => + services.AddHttpClient(NamedClient.Default, c => { c.DefaultRequestHeaders.UserAgent.Add(productHeader); c.DefaultRequestHeaders.Accept.Add(acceptJsonHeader); diff --git a/tests/Jellyfin.Server.Integration.Tests/JellyfinApplicationFactory.cs b/tests/Jellyfin.Server.Integration.Tests/JellyfinApplicationFactory.cs index c38faeda1..41b2273d0 100644 --- a/tests/Jellyfin.Server.Integration.Tests/JellyfinApplicationFactory.cs +++ b/tests/Jellyfin.Server.Integration.Tests/JellyfinApplicationFactory.cs @@ -82,7 +82,7 @@ namespace Jellyfin.Server.Integration.Tests appHost.Init(serviceCollection); // Configure the web host builder - Program.ConfigureWebHostBuilder(builder, appHost, serviceCollection, commandLineOpts, startupConfig, appPaths); + Program.ConfigureWebHostBuilder(builder, appHost, startupConfig, appPaths); } /// <inheritdoc/> |
