微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

间歇性错误 System.ObjectDisposedException:无法访问已处理的对象

如何解决间歇性错误 System.ObjectDisposedException:无法访问已处理的对象

为了提供更多上下文,我们有一个带有 GraphQL 设置的 ASP.NET Core abp 框架。一切正常,但是当我们将它部署在带有负载均衡器的环境中时,它失败并显示以下错误

错误

    Object name: 'Scope cache was already disposed. This is most likely a bug in the calling code.'.
   at Castle.MicroKernel.Lifestyle.Scoped.ScopeCache.get_Item(Object id)
   at Castle.MicroKernel.Lifestyle.Scoped.DefaultLifetimeScope.GetCachedInstance(ComponentModel model,ScopedInstanceActivationCallback createInstance)
   at Castle.MicroKernel.Lifestyle.ScopedLifestyleManager.Resolve(CreationContext context,IReleasePolicy releasePolicy)
   at Castle.Windsor.MsDependencyInjection.MsScopedLifestyleManager.Resolve(CreationContext context,IReleasePolicy releasePolicy)
   at Castle.MicroKernel.Handlers.DefaultHandler.ResolveCore(CreationContext context,Boolean requiresDecommission,Boolean instancerequired,Burden& burden)
   at Castle.MicroKernel.Handlers.DefaultHandler.Resolve(CreationContext context,Boolean instancerequired)
   at Castle.MicroKernel.DefaultKernel.ResolveComponent(IHandler handler,Type service,Arguments additionalArguments,IReleasePolicy policy,Boolean ignoreParentContext)
   at Castle.Windsor.MsDependencyInjection.ScopedWindsorServiceProvider.GetServiceInternal(Type serviceType,Boolean isOptional)
   at Castle.Windsor.MsDependencyInjection.ScopedWindsorServiceProvider.GetService(Type serviceType)
   at GraphQL.Utilities.ServiceProviderExtensions.GetrequiredService(IServiceProvider provider,Type serviceType) in C:\projects\graphql-dotnet\src\GraphQL\Utilities\ServiceProviderExtensions.cs:line 38
   at GraphQL.Types.Schema.<CreateTypesLookup>b__68_1(Type type) in C:\projects\graphql-dotnet\src\GraphQL\Types\Schema.cs:line 314
   at GraphQL.Types.GraphTypesLookup.AddTypeIfNotRegistered(Type type,TypeCollectionContext context) in C:\projects\graphql-dotnet\src\GraphQL\Types\GraphTypesLookup.cs:line 407
   at GraphQL.Types.GraphTypesLookup.HandleField(IComplexGraphType parentType,FieldType field,TypeCollectionContext context,Boolean applyNameConverter) in C:\projects\graphql-dotnet\src\GraphQL\Types\GraphTypesLookup.cs:line 332
   at GraphQL.Types.GraphTypesLookup.AddType(IGraphType type,TypeCollectionContext context) in C:\projects\graphql-dotnet\src\GraphQL\Types\GraphTypesLookup.cs:line 246
   at GraphQL.Types.GraphTypesLookup.Create(IEnumerable`1 types,IEnumerable`1 directives,Func`2 resolveType,INameConverter nameConverter,Boolean seal) in C:\projects\graphql-dotnet\src\GraphQL\Types\GraphTypesLookup.cs:line 88
   at GraphQL.Types.Schema.CreateTypesLookup() in C:\projects\graphql-dotnet\src\GraphQL\Types\Schema.cs:line 311
   at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)
--- End of stack trace from prevIoUs location where exception was thrown ---
   at System.Lazy`1.CreateValue()
   at System.Lazy`1.get_Value()
   at GraphQL.Types.Schema.FindType(String name) in C:\projects\graphql-dotnet\src\GraphQL\Types\Schema.cs:line 231
   at GraphQL.Types.Schema.Initialize() in C:\projects\graphql-dotnet\src\GraphQL\Types\Schema.cs:line 78
   at GraphQL.DocumentExecuter.ExecuteAsync(Executionoptions options) in C:\projects\graphql-dotnet\src\GraphQL\Execution\DocumentExecuter.cs:line 66

我们设置 Startup.cs 如下

services.AddSingleton<IDocumentWriter,DocumentWriter>();
        services.AddSingleton<IDocumentExecuter,DocumentExecuter>();
        services.AddSingleton<IDataLoaderContextAccessor,DataLoaderContextAccessor>();
        services.AddSingleton<DataLoaderDocumentListener>();
        services.AddSingleton<ISchema,SchoolSchema>();
        services.AddSingleton<SchoolSchema>();
        services.AddSingleton<IHttpContextAccessor,HttpContextAccessor>();
        services.AddSingleton<SchoolQuery>();
        services.AddSingleton<SchoolMutation>();
        services.AddSingleton<IHttpHandler,HttpHandler>();
        services.AddSingleton<HttpClient>();

        services.AddScoped<StudentTypeCollection>();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?