Функции Azure Экземпляры с областью действия расположены и больше не доступны - PullRequest
0 голосов
/ 27 сентября 2019

Я получаю сообщение об ошибке ниже, когда приложение функции запускается во время выполнения версии "2.0.12701.0" (FUNCTIONS_EXTENSION_VERSION = ~2 in App Settings). Как только я изменяю FUNCTIONS_EXTENSION_VERSION to 2.0.12673.0 в настройках приложения. Функция начинает работать без изменения или развертывания кода.

Ошибка:

DryIoc.ContainerException: Scope disposed {нет имени, Parent = disposed {нет имени, Parent = disposed {no name}}} удаляется, а экземпляры области действия удаляются и больше не доступны. в DryIoc.Throw.It (ошибка Int32, объект arg0, объект arg1, объект arg2, объект arg3) в C: \ azure-webjobs-sdk-script \ src \ WebJobs.Script.WebHost \ DependencyInjection \ DryIoc \ Container.cs: 8991 в DryIoc.Scope.TryGet (Object & item, Int32 id) в C: \ azure-webjobs-sdk-script \ src \ WebJobs.Script.WebHost \ DependencyInjection \ DryIoc \ Container.cs: 7881 в DryIoc.Container.InstanceFactory.GetAndUnwrapOrDefault (область видимости IScope, Int32 factoryId) в C: \ azure-webjobs-sdk-script \ src \ WebJobs.Script.WebHost \ DependencyInjection \ DryIoc \ Container.cs: 1480 в DryIoc.Container.InstanceFactory.romopstanceFeChainOrSingletons (IResolverContext r) в C: \ azure-webjobs-sdk-script \ src \ WebJobs.Script.WebHost \ DependencyInjection \ DryIoc \ Container.cs: 1466 в DryIoc.Container.ResolveAndCacheDefaultFactoryTure\ azure-webjobs-sdk-script \ src \ WebJobs.Script.WebHost \ DependencyInjection \ DryIoc \ Container.cs: 224 в DryIoc.Container.DryIoc.IResolver.Resolve (введите serviceType, IfUnresolved ifUnresolved) в C: \ azure-webjo-sdk-script \ src \ WebJobs.Script.WebHost \ DependencyInjection \ DryIoc \ Container.cs: 195 в DryIoc.Resolver.Resolve [TService] (преобразователь IResolver, IfUnresolved ifUnresolved) в C: \ azure-webjobs-sdk-script \src \ WebJobs.Script.WebHost \ DependencyInjection \ DryIoc \ Container.cs: 4742 в DryIoc.Microsoft.DependencyInjection.DryIocAdapter. <> c__DisplayClass3_0.b__0 (IResolverContext r) в C: \ azure-webjobs-sjk-sdk-script.Script.WebHost \ DependencyInjection \ DryIoc \ DryIocAdapter.cs: 156 в DryIoc.Registrator. <> C__DisplayClass27_0.b__0 (IResolverConтекст r) в C: \ azure-webjobs-sdk-script \ src \ WebJobs.Script.WebHost \ DependencyInjection \ DryIoc \ Container.cs: 4541 в lambda_method (Closure, IResolverContext) в DryIoc.Factory. <> c__DisplayClass26_1.b__) в C: \ azure-webjobs-sdk-script \ src \ WebJobs.Script.WebHost \ DependencyInjection \ DryIoc \ Container.cs: 6596 в DryIoc.Scope.TryGetOrAdd (ImMap 1 items,Int32 id,CreateScopedValue createValue,Int32 disposalOrder) at C:\azure-webjobs-sdk-script\src\WebJobs.Script.WebHost\DependencyInjection\DryIoc\Container.cs : 7840 at DryIoc.Scope.GetOrAdd(Int32 id,CreateScopedValue createValue,Int32 disposalOrder) at C:\azure-webjobs-sdk-script\src\WebJobs.Script.WebHost\DependencyInjection\DryIoc\Container.cs : 7825 at DryIoc.Factory.ApplyReuse(Expression serviceExpr,Request request) at C:\azure-webjobs-sdk-script\src\WebJobs.Script.WebHost\DependencyInjection\DryIoc\Container.cs : 6595 at DryIoc.Factory.GetExpressionOrDefault(Request request) at C:\azure-webjobs-sdk-script\src\WebJobs.Script.WebHost\DependencyInjection\DryIoc\Container.cs : 6555 at DryIoc.Factory.GetDelegateOrDefault(Request request) at C:\azure-webjobs-sdk-script\src\WebJobs.Script.WebHost\DependencyInjection\DryIoc\Container.cs : 6625 at DryIoc.DelegateFactory.GetDelegateOrDefault(Request request) at C:\azure-webjobs-sdk-script\src\WebJobs.Script.WebHost\DependencyInjection\DryIoc\Container.cs : 7731 at DryIoc.Container.DryIoc.IResolver.Resolve(Type serviceType,Object serviceKey,IfUnresolved ifUnresolved,Type requiredServiceType,Request preResolveParent,Object[] args) at C:\azure-webjobs-sdk-script\src\WebJobs.Script.WebHost\DependencyInjection\DryIoc\Container.cs : 290 at lambda_method(Closure ) at DryIoc.Scope.TryGetOrAdd(ImMap 1 элементов, идентификатор Int32, CreateScopedValue createValue,Int32 избавление от уплаты) в C: \ azure-webjobs-sdk-script \ src \ WebJobs.Script.WebHost \ DependencyInjection \ DryIoc \ Container.cs: 7840 в DryIoc.Scope.GetOrAdd (идентификатор Int32, CreateScopedValue createValue, Int32 disidOrder в).\ azure-webjobs-sdk-script \ src \ WebJobs.Script.WebHost \ DependencyInjection \ DryIoc \ Container.cs: 224 в DryIoc.Container.DryIoc.IResolver.Разрешить (введите serviceType, IfUnresolved ifUnresolved) в C: \ azure-webjobs-sdk-script \ src \ WebJobs.Script.WebHost \ DependencyInjection \ DryIoc \ Container.cs: 195 в Microsoft.Azure.WebJobs.Script.WebHost.DependencyInjection.ScopedServiceProvider.GetService (Тип serviceType) в C: \ azure-webjobs-sdk-script \ src \ WebJobs.Script.WebHost \ DependencyInjection \ ScopedServiceProvider.cs: 25 в Microsoft.Extensions.DependencyInjection.ActivatorProviderServiceServiceService (), Введите requiredBy, Boolean isDefaultParameterRequired) в lambda_method (Closure, IServiceProvider, Object []) в Microsoft.Azure.WebJobs.Host.Executors.DefaultJobActivator.CreateInstance [T] (IServiceProvider serviceProvider) вC: \ projects \ azure-webjobs-sdk-rqm4t \ src \ Microsoft.Azure.WebJobs.Host \ Executors \ DefaultJobActivator.cs: 37 в Microsoft.Azure.WebJobs.Host.Executors.DefaultJobActivator.CreateInstance функция-экземпляр [T] () в C: \ projects \ azure-webjobs-sdk-rqm4t \ src \ Microsoft.Azure.WebJobs.Host \ Executors \ DefaultJobActivator.cs: 32 в Microsoft.Azure.WebJobs.Host.Executors.ActivatorInstanceFactory 1.<>c__DisplayClass1_1.<.ctor>b__0(IFunctionInstanceEx i) at C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Executors\ActivatorInstanceFactory.cs : 20 at Microsoft.Azure.WebJobs.Host.Executors.ActivatorInstanceFactory 1.Создать(IFunctionInstanceEx functionInstance) в C: \ projects \ azure-webjobs-sdk-rqm4t \ src \ Microsoft.Azure.WebJobs.Host \ Executors \ ActivatorInstanceFactory.cs: 26 в Microsoft.Azure.WebJobs.Host.Executors.FunctionInvoker2.CreateInstance (IFunctionInstanceEx functionInstance) в C: \ projects \ azure-webjobs-sdk-rqm4t \ src \ Microsoft.Azure.WebJobs.Host \ Executors \ FunctionInvoker.cs: 44 в Microsoft.Azure.WebJobs.Host.Executors.FunctionExHec..Initialize () в C: \ projects \ azure-webjobs-sdk-rqm4t \ src \ Microsoft.Azure.WebJobs.Host \ Executors \ FunctionExecutor.cs: 846 в асинхронной Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.TryExecuteAsyncCore (IFunctionInstanceEx functionInstance, CancellationToken cancellationToken) в C: \ projects \ azure-webjobs-sdk-rqm4t \ src \ Microsoft.Azure.WExEx.Hececutor116

Изменение версии времени выполнения функции (FUNCTIONS_EXTENSION_VERSION = 2.0.12673.0) в параметре приложения из версии по умолчанию версии 2.0.12701.0 решило проблему.

Это моя функцияКласс запуска приложения, который регистрирует зависимости.

 public class FunctionAppStartup : FunctionsStartup
    {
        public override void Configure(IFunctionsHostBuilder builder)
        {
            var config = new ConfigurationBuilder()
                                .SetBasePath(Environment.CurrentDirectory)
                                .AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
                                .AddJsonFile("secret.settings.json", optional: true, reloadOnChange: true)
                                .AddEnvironmentVariables()
                                .Build();

            builder.Services.Configure<ConfigurationManager>(x => config.Bind(x));
            builder.Services.AddSingleton<Contracts.IConfiguration>(resolver =>
                resolver.GetRequiredService<IOptions<ConfigurationManager>>().Value);

            builder.Services.AddScoped<IChannelAdapter, ChannelAdapter>();
            builder.Services.AddScoped<ITableStorageManager, TableStorageManager>();
            builder.Services.AddSingleton<IDatabaseContext, DatabaseContext>();
            builder.Services.AddScoped<IJobRepository, JobRepository>();
        }
    }

Ожидается, что мое функциональное приложение будет работать на последней версии времени выполнения вместо меня, нацеленного на второстепенную версию времени выполнения.

1 Ответ

1 голос
/ 27 сентября 2019

Теперь вы не можете использовать эту версию во время выполнения.

Потому что даже это последняя выпущенная версия, однако она не обновлена ​​до рабочего сайта.Ознакомьтесь с примечанием к выпуску .

Примечание. Этот выпуск еще не запущен, но будет развернут в течение следующих нескольких дней.Эти заметки о выпуске будут обновлены, когда они будут развернуты на всех рабочих сайтах.

После обновления официальное лицо обновит заметку.Так что последняя доступная версия - 2.0.12673.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...