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);
});
}