Выдает ToListAsync. Не удается получить доступ к удаленному объекту. - PullRequest
0 голосов
/ 28 июня 2018

Кто-нибудь знает, почему ToListAsync выдаст ошибку:

"System.ObjectDisposedException: невозможно получить доступ к удаленному объекту"

в следующем коде?

using (var c = new Context())
{
    var companies = await c.Database.SqlQuery<Company>("exec 
            GetStoredPrcedure @id", new SqlParameter("@id", id))
        .ToListAsync();

    // Process companies.
}

Вот полная трассировка стека.

System.ObjectDisposedException: невозможно получить доступ к удаленному объекту. в System.Reflection.RuntimeAssembly._nLoad (имя_файла AssemblyName, кодовая строка строки, сборка доказательствSecurity, locationHame сборка locationHint, StackCrawlMark & ​​stackMark, IntPtr pPrivHostBinder, логическое throwOnFileNotFound, логическое выражение для принудительной проверки безопасности, логическое выражение для принудительной блокировки) в System.Reflection.RuntimeAssembly.InternalLoadAssemblyName (AssemblyName assemblyRef, Evidence AssemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark & ​​stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Логическое значение forIntrospection, логическое значение suppressSecurityChecks) в System.Reflection.Assembly.Load (AssemblyName assemblyRef) в System.Data.Entity.Core.Metadata.Edm.MetadataAssemblyHelper. SafeLoadReferencedAssembly (AssemblyName assemblyName) в System.Data.Entity.Core.Metadata.Edm.MetadataAssemblyHelper.d__0.MoveNext () в System.Linq.Enumerable.Any [TSource] (источник IEnumerable'1, предикат Func'2) в System.Data.Entity.Core.Metadata.Edm.MetadataWorkspace.ImplicitLoadAssemblyForType (Тип типа, сборка, вызывающая сборку) в System.Data.Entity.Core.Metadata.Edm.MetadataWorkspace.TryDetermineCSpaceModelType (Type type, EdmType & modelEdmType) в System.Data.Entity.Core.Query.InternalTrees.ColumnMapFactory.CreateColumnMapFromReaderAndClrType (средство чтения DbDataReader, тип Type, рабочая область MetadataWorkspace) в System.Data.Entity.Core.Objects.ObjectContext.InternalTranslate [TElement] (читатель DbDataReader, String entitySetName, MergeOption mergeOption, логический поток, EntitySet & entitySet, TypeUsage & edmType) at System.Data.Entity.Core.Objects.ObjectContext.d__73'1.MoveNext () --- Конец трассировки стека из предыдущего местоположения, где было сгенерировано исключение --- в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача) в System.Data.Entity.Utilities.TaskExtensions.CultureAwaiter'1.GetResult () в System.Data.Entity.Core.Objects.ObjectContext.d__3d'1.MoveNext () --- Конец стека трассировки из предыдущего места, где было сгенерировано исключение --- в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача) в System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.d__9'1.MoveNext () --- Конец стека трассировки из предыдущего места, где было сгенерировано исключение --- в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача) в System.Data.Entity.Utilities.TaskExtensions.CultureAwaiter'1.GetResult () at System.Data.Entity.Core.Objects.ObjectContext.d__70'1.MoveNext () --- Конец трассировки стека из предыдущего местоположения, где было сгенерировано исключение --- в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача) в System.Data.Entity.Utilities.TaskExtensions.CultureAwaiter'1.GetResult () в System.Data.Entity.Internal.LazyAsyncEnumerator'1.d__0.MoveNext () --- Конец стека трассировки из предыдущего места, где было сгенерировано исключение --- в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача) в System.Data.Entity.Infrastructure.IDbAsyncEnumerableExtensions.d__5'1.MoveNext () --- Конец стека трассировки из предыдущего места, где было сгенерировано исключение --- в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw ()в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача) в Services.Companies.CompanyService.d__41.MoveNext () в API \ src \ Services \ Companies \ CompanyService.cs: строка 927

Исключение не появляется, пока сервер не увеличит трафик. Я подозреваю, что GC избавляется от соединения до того, как будет возвращен весь набор результатов, но я не уверен, почему или если я могу что-то сделать с этим.

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