diff --git a/Emby.Server.Implementations/ApplicationHost.cs b/Emby.Server.Implementations/ApplicationHost.cs
index e951ab1146..75a2b194a6 100644
--- a/Emby.Server.Implementations/ApplicationHost.cs
+++ b/Emby.Server.Implementations/ApplicationHost.cs
@@ -245,8 +245,6 @@ namespace Emby.Server.Implementations
/// The server configuration manager.
public IServerConfigurationManager ServerConfigurationManager => (IServerConfigurationManager)ConfigurationManager;
- public LocalizationManager LocalizationManager { get; set; }
-
///
/// Gets the installation manager.
///
@@ -629,9 +627,7 @@ namespace Emby.Server.Implementations
serviceCollection.AddSingleton(ServerConfigurationManager);
- LocalizationManager = new LocalizationManager(ServerConfigurationManager, JsonSerializer, LoggerFactory.CreateLogger());
- await LocalizationManager.LoadAll().ConfigureAwait(false);
- serviceCollection.AddSingleton(LocalizationManager);
+ serviceCollection.AddSingleton();
serviceCollection.AddSingleton();
@@ -651,15 +647,16 @@ namespace Emby.Server.Implementations
serviceCollection.AddSingleton();
// TODO: Add StartupOptions.FFmpegPath to IConfiguration so this doesn't need to be constructed manually
- serviceCollection.AddSingleton(new MediaBrowser.MediaEncoding.Encoder.MediaEncoder(
- LoggerFactory.CreateLogger(),
- ServerConfigurationManager,
- FileSystemManager,
- ProcessFactory,
- LocalizationManager,
- Resolve,
- startupConfig,
- StartupOptions.FFmpegPath));
+ serviceCollection.AddSingleton(provider =>
+ new MediaBrowser.MediaEncoding.Encoder.MediaEncoder(
+ provider.GetRequiredService>(),
+ provider.GetRequiredService(),
+ provider.GetRequiredService(),
+ provider.GetRequiredService(),
+ provider.GetRequiredService(),
+ provider.GetRequiredService,
+ provider.GetRequiredService(),
+ StartupOptions.FFmpegPath));
// TODO: Refactor to eliminate the circular dependencies here so that Lazy isn't required
serviceCollection.AddTransient(provider => new Lazy(provider.GetRequiredService));
@@ -735,8 +732,12 @@ namespace Emby.Server.Implementations
///
/// Create services registered with the service container that need to be initialized at application startup.
///
- public void InitializeServices()
+ /// A task representing the service initialization operation.
+ public async Task InitializeServices()
{
+ var localizationManager = (LocalizationManager)Resolve();
+ await localizationManager.LoadAll().ConfigureAwait(false);
+
_mediaEncoder = Resolve();
_sessionManager = Resolve();
_httpServer = Resolve();
@@ -833,7 +834,7 @@ namespace Emby.Server.Implementations
BaseItem.ConfigurationManager = ServerConfigurationManager;
BaseItem.LibraryManager = Resolve();
BaseItem.ProviderManager = Resolve();
- BaseItem.LocalizationManager = LocalizationManager;
+ BaseItem.LocalizationManager = Resolve();
BaseItem.ItemRepository = Resolve();
User.UserManager = Resolve();
BaseItem.FileSystem = FileSystemManager;
diff --git a/Emby.Server.Implementations/Localization/LocalizationManager.cs b/Emby.Server.Implementations/Localization/LocalizationManager.cs
index bda43e832a..e2a634e1a4 100644
--- a/Emby.Server.Implementations/Localization/LocalizationManager.cs
+++ b/Emby.Server.Implementations/Localization/LocalizationManager.cs
@@ -23,9 +23,6 @@ namespace Emby.Server.Implementations.Localization
private static readonly Assembly _assembly = typeof(LocalizationManager).Assembly;
private static readonly string[] _unratedValues = { "n/a", "unrated", "not rated" };
- ///
- /// The _configuration manager.
- ///
private readonly IServerConfigurationManager _configurationManager;
private readonly IJsonSerializer _jsonSerializer;
private readonly ILogger _logger;
diff --git a/Jellyfin.Server/Program.cs b/Jellyfin.Server/Program.cs
index 5e9c15e20e..83170c6ae0 100644
--- a/Jellyfin.Server/Program.cs
+++ b/Jellyfin.Server/Program.cs
@@ -208,7 +208,7 @@ namespace Jellyfin.Server
// 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;
- appHost.InitializeServices();
+ await appHost.InitializeServices().ConfigureAwait(false);
Migrations.MigrationRunner.Run(appHost, _loggerFactory);
try