Я получаю сообщение об ошибке ниже, когда приложение функции запускается во время выполнения версии "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>();
}
}
Ожидается, что мое функциональное приложение будет работать на последней версии времени выполнения вместо меня, нацеленного на второстепенную версию времени выполнения.