Container is disposed and should not be used exception after .NET 6 upgrade

Viewed 69

I see the following exception from Azure Function (Service Bus Trigger) after I upgraded azure function from v3 to v4 as part of .NET 6 upgrade:

The host is disposed and cannot be used. Disposed object: 'Microsoft.Azure.WebJobs.Script.WebHost.DependencyInjection.ScopedResolver'; Found IListener in stack trace: 'Microsoft.Azure.WebJobs.ServiceBus.Listeners.ServiceBusListener, Microsoft.Azure.WebJobs.ServiceBus, Version=4.3.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' Container is disposed and should not be used: Container is disposed.
You may include Dispose stack-trace into the message via:
container.With(rules => rules.WithCaptureContainerDisposeStackTrace()) 

Here are the nuget packages I use:

    <PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.1.0" />
    <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.DurableTask" Version="2.7.2" />
    <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.ServiceBus" Version="5.6.0" />
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="4.1.1" />
    <PackageReference Include="System.Text.Encodings.Web" Version="6.0.0" />

And here is my code in Startup.cs

public override void Configure(IFunctionsHostBuilder builder)
{
            base.Configure(builder);
            builder.Services.AddSingleton<IServiceClient>((services) =>
            {
                return new ServiceClient(CreateAuthProviderFromSecret(value));
            })
            .AddScoped<IGraphRepository, GraphRepository>()            
            .AddSingleton<IBlobRepository, BlobRepository>((s) =>
            {
                var configuration = s.GetService<IConfiguration>();
                var a = configuration["a"];                
                return new BlobRepository(a);
            });
}
0 Answers
Related