Azure 函数范围的实例已释放,不再可用



当函数应用程序在运行时版本上运行时,我收到以下错误"2.0.12701.0" (FUNCTIONS_EXTENSION_VERSION = ~2 in App Settings).一旦我更改应用程序设置中的FUNCTIONS_EXTENSION_VERSION to 2.0.12673.0。函数开始工作,无需任何代码更改或部署。

错误:

DryIoc.ContainerException : Scope disposed{no name, Parent=disposed{no name, 父级=disposed{no name}}} 被释放,作用域内的实例是 已处置,不再可用。 在 DryIoc.Throw.It(Int32 错误,对象参数0,对象参数1,对象参数2,对象参数3) at C:\azure-webjobs-sdk-script\src\WebJobs.Script.WebHost\DependencyInjection\DryIoc\Container.cs : 8991 at DryIoc.Scope.TryGet(Object& item,Int32 id) at C:\azure-webjobs-sdk-script\src\WebJobs.Script.WebHost\DependencyInjection\DryIoc\Container.cs : 7881 在 DryIoc.Container.InstanceFactory.GetAndUnwrapOrDefault(IScope 范围,Int32 工厂 ID) 在 C:\azure-webjobs-sdk-script\src\WebJobs.Script.WebHost\DependencyInjection\DryIoc\Container.cs : 1480 在 DryIoc.Container.InstanceFactory.GetInstanceFromScopeChainOrSingletons(IResolverContext r) 在 C:\azure-webjobs-sdk-script\src\WebJobs.Script.WebHost\DependencyInjection\DryIoc\Container.cs : 1466 在 DryIoc.Container.ResolveAndCacheDefaultFactoryDelegate(Type 服务类型,如果未解析,如果未解析) at C:\azure-webjobs-sdk-script\src\WebJobs.Script.WebHost\DependencyInjection\DryIoc\Container.cs : 224 at DryIoc.Container.DryIoc.IResolver.Resolve(Type 服务类型,如果未解析,如果未解析) at C:\azure-webjobs-sdk-script\src\WebJobs.Script.WebHost\DependencyInjection\DryIoc\Container.cs : 195 at DryIoc.Resolver.Resolve[TService](IResolver 解析器,如果未解析,则未解析) at 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-sdk-script\src\WebJobs.Script.WebHost\DependencyInjection\DryIoc\DryIocAdapter.cs : 156 在 DryIoc.Registrator.<>c__DisplayClass27_0.b__0(IResolverContext r) 在 C:\azure-webjobs-sdk-script\src\WebJobs.Script.WebHost\DependencyInjection\DryIoc\Container.cs : 4541 在 lambda_method(闭包,IResolver上下文 ) at DryIoc.Factory.<>c__DisplayClass26_1.b__2() at C:\azure-webjobs-sdk-script\src\WebJobs.Script.WebHost\DependencyInjection\DryIoc\Container.cs : 6596 at DryIoc.Scope.TryGetOrAdd(ImMap1 items,Int32 id,CreateScopedValue createValue,Int32 disposalOrder) at C:azure-webjobs-sdk-scriptsrcWebJobs.Script.WebHostDependencyInjectionDryIocContainer.cs : 7840 at DryIoc.Scope.GetOrAdd(Int32 id,CreateScopedValue createValue,Int32 disposalOrder) at C:azure-webjobs-sdk-scriptsrcWebJobs.Script.WebHostDependencyInjectionDryIocContainer.cs : 7825 at DryIoc.Factory.ApplyReuse(Expression serviceExpr,Request request) at C:azure-webjobs-sdk-scriptsrcWebJobs.Script.WebHostDependencyInjectionDryIocContainer.cs : 6595 at DryIoc.Factory.GetExpressionOrDefault(Request request) at C:azure-webjobs-sdk-scriptsrcWebJobs.Script.WebHostDependencyInjectionDryIocContainer.cs : 6555 at DryIoc.Factory.GetDelegateOrDefault(Request request) at C:azure-webjobs-sdk-scriptsrcWebJobs.Script.WebHostDependencyInjectionDryIocContainer.cs : 6625 at DryIoc.DelegateFactory.GetDelegateOrDefault(Request request) at C:azure-webjobs-sdk-scriptsrcWebJobs.Script.WebHostDependencyInjectionDryIocContainer.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-scriptsrcWebJobs.Script.WebHostDependencyInjectionDryIocContainer.cs : 290 at lambda_method(Closure ) at DryIoc.Scope.TryGetOrAdd(ImMap1 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 在 lambda_method(闭包,IResolver上下文) at DryIoc.Container.ResolveAndCacheDefaultFactoryDelegate(Type 服务类型,如果未解析,如果未解析) at C:\azure-webjobs-sdk-script\src\WebJobs.Script.WebHost\DependencyInjection\DryIoc\Container.cs : 224 at DryIoc.Container.DryIoc.IResolver.Resolve(Type 服务类型,如果未解析,如果未解析) at C:\azure-webjobs-sdk-script\src\WebJobs.Script.WebHost\DependencyInjection\DryIoc\Container.cs : 195 在 Microsoft.Azure.WebJobs.Script.WebHost.DependencyInjection.ScopedServiceProvider.GetService(Type 服务类型)在 C:\azure-webjobs-sdk-script\src\WebJobs.Script.WebHost\DependencyInjection\ScopedServiceProvider.cs : 25 在 Microsoft.Extensions.DependencyInjection.ActivatorUtilities.GetService(IServiceProvider sp,类型类型,Type requiredBy,布尔值是默认参数必需) at lambda_method(Closure ,IServiceProvider ,Object[] ) at Microsoft.Azure.WebJobs.Host.Executors.DefaultJobActivator.CreateInstance[T](IServiceProvider 服务提供者) 在 C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Executors\DefaultJobActivator.cs : 37 在 Microsoft.Azure.WebJobs.Host.Executors.DefaultJobActivator.CreateInstance[T](IFunctionInstanceEx 函数实例) 在 C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Executors\DefaultJobActivator.cs : 32 在 Microsoft.Azure.WebJobs.Host.Executors.ActivatorInstanceFactory1.<>c__DisplayClass1_1.<.ctor>b__0(IFunctionInstanceEx i) at C:projectsazure-webjobs-sdk-rqm4tsrcMicrosoft.Azure.WebJobs.HostExecutorsActivatorInstanceFactory.cs : 20 at Microsoft.Azure.WebJobs.Host.Executors.ActivatorInstanceFactory1.Create(IFunctionInstanceEx 函数实例) 在 C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Executors\ActivatorInstanceFactory.cs : 26 在 Microsoft.Azure.WebJobs.Host.Executors.FunctionInvoker'2.CreateInstance(IFunctionInstanceEx 函数实例) 在 C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Executors\FunctionInvoker.cs : 44 在 Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.ParameterHelper.Initialize() 在 C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Executors\FunctionExecutor.cs 异步时为 846Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.TryExecuteAsyncCore(IFunctionInstanceEx 函数实例,取消令牌取消令牌) at C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Executors\FunctionExecutor.cs : 116

将应用设置中的函数运行时版本 (FUNCTIONS_EXTENSION_VERSION =2.0.12673.0) 从默认运行时版本 2.0.12701.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>();
}
}

希望我的函数应用在最新的运行时版本上运行,而不是以次要运行时版本为目标。

现在,您无法使用此运行时版本。

因为即使这是最新发布的版本,但它也没有更新到生产站点。请查看发行说明。

注意:此版本尚未投入生产,但将在未来几天内部署。这些发行说明将在部署到所有生产站点后进行更新。

更新后,官方将更新注释。所以最新的可用版本是2.0.12673.

最新更新