diff --git a/src/libraries/Microsoft.Extensions.Hosting/src/HostBuilder.cs b/src/libraries/Microsoft.Extensions.Hosting/src/HostBuilder.cs index dbc8ab3b90008b..e16461fffbf39e 100644 --- a/src/libraries/Microsoft.Extensions.Hosting/src/HostBuilder.cs +++ b/src/libraries/Microsoft.Extensions.Hosting/src/HostBuilder.cs @@ -37,7 +37,7 @@ public partial class HostBuilder : IHostBuilder private HostingEnvironment? _hostingEnvironment; private IServiceProvider? _appServices; private PhysicalFileProvider? _defaultProvider; - private readonly bool _defaultProviderFactoryUsed; + private bool _defaultProviderFactoryUsed; /// /// Initializes a new instance of . @@ -109,6 +109,7 @@ public IHostBuilder UseServiceProviderFactory(IServiceProvide ThrowHelper.ThrowIfNull(factory); _serviceProviderFactory = new ServiceFactoryAdapter(factory); + _defaultProviderFactoryUsed = false; return this; } @@ -123,6 +124,7 @@ public IHostBuilder UseServiceProviderFactory(Func(() => _hostBuilderContext!, factory); + _defaultProviderFactoryUsed = false; return this; } diff --git a/src/libraries/Microsoft.Extensions.Hosting/tests/UnitTests/HostBuilderTests.cs b/src/libraries/Microsoft.Extensions.Hosting/tests/UnitTests/HostBuilderTests.cs index 929851b65e9526..15fc168f35130c 100644 --- a/src/libraries/Microsoft.Extensions.Hosting/tests/UnitTests/HostBuilderTests.cs +++ b/src/libraries/Microsoft.Extensions.Hosting/tests/UnitTests/HostBuilderTests.cs @@ -560,6 +560,58 @@ public void ValidateOnBuildEnabledInDevelopment() Assert.Throws(() => hostBuilder.Build()); } + [Fact] + public void ScopeValidationNotEnabledInDevelopmentWithServiceProviderChanges() + { + using var host = new HostBuilder() + .UseEnvironment(Environments.Development) + .ConfigureServices(serices => + { + serices.AddScoped(); + }) + .UseDefaultServiceProvider((context, options) => + { + options.ValidateScopes = false; + }) + .Build(); + + Assert.NotNull(host.Services.GetRequiredService()); + } + [Fact] + public void ScopeValidationtEnabledInDevelopmentWithServiceProviderChanges() + { + var host = new HostBuilder() + .UseEnvironment(Environments.Development) + .ConfigureServices(services => + { + services.AddScoped(); + }) + .UseDefaultServiceProvider((context, options) => + { + options.ValidateScopes = true; + }) + .Build(); + + Assert.Throws(() => host.Services.GetRequiredService()); + } + [Fact] + public void ValidateOnBuildNotEnabledInDevelopmentWithServiceProviderChanges() + { + using var host = new HostBuilder() + .UseEnvironment(Environments.Development) + .ConfigureServices(serices => + { + serices.AddSingleton(); + }) + .UseDefaultServiceProvider((context, options) => + { + options.ValidateOnBuild = false; + }) + .Build(); + + Assert.NotNull(host); + } + [Fact] public void HostingContextContainsAppConfigurationDuringConfigureLogging() {