azure-functions-host: The type initializer for 'Converter' threw an exception. Scope disposed{no name, Parent=disposed{no name}} is disposed and scoped instances are disposed and no longer available.
Refers to https://github.com/Azure/azure-functions-host/issues/5060
This issue seems not be solved, not with the latest ~2 runtime or any other recent version I get a massive amount of these errors since yesterday with no change from my side.
System.TypeInitializationException:
at be.signdisplay.fieldwire.Project+<ReadOne>d__28.MoveNext (Flow, Version=1.0.0.0, Culture=neutral, PublicKeyToken=bf569fd40f74a9d5Flow, Version=1.0.0.0, Culture=neutral, PublicKeyToken=bf569fd40f74a9d5: D:\home\site\repository\shared\fieldwire\FieldwireProject.csFlow, Version=1.0.0.0, Culture=neutral, PublicKeyToken=bf569fd40f74a9d5: 389)
Inner exception DryIoc.ContainerException handled at be.signdisplay.fieldwire.Project+<ReadOne>d__28.MoveNext:
at DryIoc.Throw.It (Microsoft.Azure.WebJobs.Script.WebHost, Version=2.0.0.0, Culture=neutral, PublicKeyToken=nullMicrosoft.Azure.WebJobs.Script.WebHost, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null: C:\azure-webjobs-sdk-script\src\WebJobs.Script.WebHost\DependencyInjection\DryIoc\Container.csMicrosoft.Azure.WebJobs.Script.WebHost, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null: 8991)
at DryIoc.Scope.TryGet (Microsoft.Azure.WebJobs.Script.WebHost, Version=2.0.0.0, Culture=neutral, PublicKeyToken=nullMicrosoft.Azure.WebJobs.Script.WebHost, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null: C:\azure-webjobs-sdk-script\src\WebJobs.Script.WebHost\DependencyInjection\DryIoc\Container.csMicrosoft.Azure.WebJobs.Script.WebHost, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null: 7881)
at DryIoc.Container+InstanceFactory.GetAndUnwrapOrDefault (Microsoft.Azure.WebJobs.Script.WebHost, Version=2.0.0.0, Culture=neutral, PublicKeyToken=nullMicrosoft.Azure.WebJobs.Script.WebHost, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null: C:\azure-webjobs-sdk-script\src\WebJobs.Script.WebHost\DependencyInjection\DryIoc\Container.csMicrosoft.Azure.WebJobs.Script.WebHost, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null: 1480)
at DryIoc.Container+InstanceFactory.GetInstanceFromScopeChainOrSingletons (Microsoft.Azure.WebJobs.Script.WebHost, Version=2.0.0.0, Culture=neutral, PublicKeyToken=nullMicrosoft.Azure.WebJobs.Script.WebHost, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null: C:\azure-webjobs-sdk-script\src\WebJobs.Script.WebHost\DependencyInjection\DryIoc\Container.csMicrosoft.Azure.WebJobs.Script.WebHost, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null: 1469)
at DryIoc.Container.DryIoc.IResolver.Resolve (Microsoft.Azure.WebJobs.Script.WebHost, Version=2.0.0.0, Culture=neutral, PublicKeyToken=nullMicrosoft.Azure.WebJobs.Script.WebHost, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null: C:\azure-webjobs-sdk-script\src\WebJobs.Script.WebHost\DependencyInjection\DryIoc\Container.csMicrosoft.Azure.WebJobs.Script.WebHost, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null: 265)
at lambda_method (Anonymously Hosted DynamicMethods Assembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null)
at DryIoc.Container.DryIoc.IResolver.Resolve (Microsoft.Azure.WebJobs.Script.WebHost, Version=2.0.0.0, Culture=neutral, PublicKeyToken=nullMicrosoft.Azure.WebJobs.Script.WebHost, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null: C:\azure-webjobs-sdk-script\src\WebJobs.Script.WebHost\DependencyInjection\DryIoc\Container.csMicrosoft.Azure.WebJobs.Script.WebHost, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null: 195)
at Microsoft.Azure.WebJobs.Script.WebHost.DependencyInjection.JobHostServiceProvider.GetService (Microsoft.Azure.WebJobs.Script.WebHost, Version=2.0.0.0, Culture=neutral, PublicKeyToken=nullMicrosoft.Azure.WebJobs.Script.WebHost, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null: C:\azure-webjobs-sdk-script\src\WebJobs.Script.WebHost\DependencyInjection\JobHostServiceProvider.csMicrosoft.Azure.WebJobs.Script.WebHost, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null: 101)
at Microsoft.Azure.WebJobs.Script.WebHost.DependencyInjection.JobHostServiceProvider.GetService (Microsoft.Azure.WebJobs.Script.WebHost, Version=2.0.0.0, Culture=neutral, PublicKeyToken=nullMicrosoft.Azure.WebJobs.Script.WebHost, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null: C:\azure-webjobs-sdk-script\src\WebJobs.Script.WebHost\DependencyInjection\JobHostServiceProvider.csMicrosoft.Azure.WebJobs.Script.WebHost, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null: 79)
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetService (Microsoft.Extensions.DependencyInjection.Abstractions, Version=2.2.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60)
at be.signdisplay.fieldwire.FieldwireBase`2+Converter..cctor (Flow, Version=1.0.0.0, Culture=neutral, PublicKeyToken=bf569fd40f74a9d5Flow, Version=1.0.0.0, Culture=neutral, PublicKeyToken=bf569fd40f74a9d5: D:\home\site\repository\shared\fieldwire\FieldwireBase.csFlow, Version=1.0.0.0, Culture=neutral, PublicKeyToken=bf569fd40f74a9d5: 245)
Investigative information
- Timestamp: 15/10/2019, 10:09:59 (Local time)
- Function App version (1.0 or 2.0): 2
- Function App name: sndflow
- Invocation ID: e6074a10-c0fc-4108-8ddd-9055e5d954d5
- Region: West Europe
Related information
I have the following code in place (shortened)
public class StartUp : IWebJobsStartup
{
public void Configure(IWebJobsBuilder builder)
{
builder.Services.AddTransient<DependencyInjectionContractResolver>();
}
}
public class DependencyInjectionContractResolver : CamelCasePropertyNamesContractResolver
{
DependencyInjectionMetadataProvider mp;
IServiceProvider sp;
IServiceCollection sc;
public DependencyInjectionContractResolver(DependencyInjectionMetadataProvider mp, IServiceProvider sp)
{
this.mp = mp;
this.sp = sp;
}
protected override JsonObjectContract CreateObjectContract(Type objectType)
{
if (mp.IsRegistred(objectType))
{
JsonObjectContract contract = DependencyInjectionResolveContract(objectType);
contract.DefaultCreator = () => sp.GetService(objectType);
return contract;
}
return base.CreateObjectContract(objectType);
}
private JsonObjectContract DependencyInjectionResolveContract(Type objectType)
{
var fType = mp.RegistredTypeFor(objectType);
if (fType != null) return base.CreateObjectContract(fType);
else return CreateObjectContract(objectType);
}
}
public static class Converter
{
public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
{
ContractResolver = Provider.GetService<DependencyInjectionContractResolver>(),
NullValueHandling = NullValueHandling.Ignore,
MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
DateParseHandling = DateParseHandling.None,
Converters = {
NullableDateTimeOffsetConverter.Singleton,
GuidConverter.Singleton,
new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
}
};
}
About this issue
- Original URL
- State: closed
- Created 5 years ago
- Reactions: 1
- Comments: 19 (5 by maintainers)
Part of the solution was to replace
contract.DefaultCreator = () => sp.GetService(objectType);with
contract.DefaultCreator = () => ActivatorUtilities.CreateInstance(sp, objectType);In fact, I have other locations in my code where I get similar errors when using sp.GetService() or sp.GetService<>, with each time sp being an injected IServiceProvider instance.
I have no clue why sp.GetService() does not work anymore