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)

Most upvoted comments

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