EF核心 - System.InvalidProgramException公共语言运行时检测到无效程序

问题描述 投票:0回答:1

背景

  1. 该应用程序使用身份服务器4和实体框架核心2.0.3。
  2. 它已通过VSTS使用CI / CD部署在Azure Web应用程序中
  3. 它使用Azure SQL服务器。

问题

应用程序见解通知我,由于用户无法登录而发生异常。我最终通过重新启动azure web-app解决了这个问题。

我一直在尝试重现开发中的错误,但没有运气。我已经经历过几个帖子,包括thisthis

我很紧张,因为错误可能会重新出现,再次用户将无法登录。请指导我在哪里开始故障排除,我怎样才能确保不再发生这种情况。

这里有例外细节。 Fyi,我以前从未见过这个例外。

在迭代上下文类型“MyDbContext”的查询结果时,数据库中发生异常。 System.InvalidProgramException:公共语言运行时检测到无效程序。在System.Data.Data上的System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool池,DbConnection owningObject,DbConnectionOptions选项,DbConnectionPoolKey poolKey,DbConnectionOptions userOptions)处于System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject,DbConnectionOptions userOptions,DbConnectionInternal oldConnection)处。 System.Data上的System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject,UInt32 waitForMultipleObjectsTimeout,Boolean allowCreate,Boolean onlyOneCheckConnection,DbConnectionOptions userOptions,DbConnectionInternal&connection)中的.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject,DbConnectionOptions userOptions,DbConnectionInternal oldConnection)。 ProviderBase.DbConnectionPool.WaitForPendingOpen()---抛出异常的前一个位置的堆栈跟踪结束---在System.Runtime.C的System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()处Microsoft.EntityFrameworkCore.Storage.RelationalConnection.d__34.MoveNext()中的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中的ompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)---来自先前位置的堆栈跟踪结束抛出---在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)的System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()处于Microsoft.EntityFrameworkCore.Query的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) .Internal.AsyncQueryingEnumerable1.AsyncEnumerator.<BufferlessMoveNext>d__10.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.EntityFrameworkCore.Storage.Internal.SqlServerExecutionStrategy.<ExecuteAsync>d__72.MoveNext()---抛出异常的前一个位置的堆栈跟踪结束---在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess上的System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()处(任务任务) )Microsoft.EntityFrameworkCore.Que上的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) ry.Internal.AsyncQueryingEnumerable1.AsyncEnumerator.<MoveNext>d__9.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Linq.AsyncEnumerable.<FirstOrDefault_>d__1651.MoveNext()---抛出异常的前一个位置的堆栈跟踪结束---在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess上的System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()处任务)在Microsoft.EntityFrameworkCore.Query.Internal.AsyncLinqOperatorProvider.TaskResultAsyncEnumerable1.Enumerator.<MoveNext>d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Linq.AsyncEnumerable.SelectEnumerableAsyncIterator2.d__7.MoveNext()的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)---从抛出异常的上一个位置的堆栈跟踪结束 - - System.Runtime.Exrator服务中的System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)处的System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()处于System.Linq.AsyncEnumerable.AsyncIterator1.<MoveNext>d__10.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.EntityFrameworkCore.Query.Internal.AsyncLinqOperatorProvider.ExceptionInterceptor1的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)。 EnumeratorExceptionInterceptor.d__5.MoveNext()

System.InvalidProgramException:公共语言运行时检测到无效程序。在System.Data.Data上的System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool池,DbConnection owningObject,DbConnectionOptions选项,DbConnectionPoolKey poolKey,DbConnectionOptions userOptions)处于System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject,DbConnectionOptions userOptions,DbConnectionInternal oldConnection)处。 System.Data上的System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject,UInt32 waitForMultipleObjectsTimeout,Boolean allowCreate,Boolean onlyOneCheckConnection,DbConnectionOptions userOptions,DbConnectionInternal&connection)中的.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject,DbConnectionOptions userOptions,DbConnectionInternal oldConnection)。 ProviderBase.DbConnectionPool.WaitForPendingOpen()---抛出异常的前一个位置的堆栈跟踪结束---在System.Runtime.C的System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()处Microsoft.EntityFrameworkCore.Storage.RelationalConnection.d__34.MoveNext()中的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中的ompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)---来自先前位置的堆栈跟踪结束抛出---在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)的System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()处于Microsoft.EntityFrameworkCore.Query的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) .Internal.AsyncQueryingEnumerable1.AsyncEnumerator.<BufferlessMoveNext>d__10.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.EntityFrameworkCore.Storage.Internal.SqlServerExecutionStrategy.<ExecuteAsync>d__72.MoveNext()---抛出异常的前一个位置的堆栈跟踪结束---在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess上的System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()处(任务任务) )Microsoft.EntityFrameworkCore.Que上的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) ry.Internal.AsyncQueryingEnumerable1.AsyncEnumerator.<MoveNext>d__9.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Linq.AsyncEnumerable.<FirstOrDefault_>d__1651.MoveNext()---抛出异常的前一个位置的堆栈跟踪结束---在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess上的System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()处任务)在Microsoft.EntityFrameworkCore.Query.Internal.AsyncLinqOperatorProvider.TaskResultAsyncEnumerable1.Enumerator.<MoveNext>d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Linq.AsyncEnumerable.SelectEnumerableAsyncIterator2.d__7.MoveNext()的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)---从抛出异常的上一个位置的堆栈跟踪结束 - - System.Runtime.Exrator服务中的System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)处的System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()处于System.Linq.AsyncEnumerable.AsyncIterator1.<MoveNext>d__10.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.EntityFrameworkCore.Query.Internal.AsyncLinqOperatorProvider.ExceptionInterceptor1的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)。 EnumeratorExceptionInterceptor.d__5.MoveNext()

调用堆栈:System.InvalidProgramException:System.Data.ProviderBase.DbConnectionPool.CreateObject(系System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(System.Data.SqlClient,Version = 4.2.0.2,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a).Data.SqlClient,Version = 4.2.0.2,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a)在System.Data.ProviderBase.DbConnectionPool.TryGetConnection(System.Data.SqlClient,Version = 4.2.0.2,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a)处于System.Data.ProviderBase.DbConnectionPool.WaitForPendingOpen(System.Data.SqlClient,Version = System.Runtime.CompilerS上的System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw(System.Private.CoreLib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e)中的4.2.0.2,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a) System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification上的ervices.TaskAwaiter.ThrowForNonSuccess(System.Private.CoreLib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e)(System.Private.CoreLib,Version = 4.0.0.0,Culture在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw的Microsoft.EntityFrameworkCore.Storage.RelationalConnection + d__34.MoveNext(Microsoft.EntityFrameworkCore.Relational,Version = 2.0.3.0,Culture = neutral,PublicKeyToken = adb9793829ddae60)处于= neutral,PublicKeyToken = 7cec85d7bea7798e) System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess上的(System.Private.CoreLib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e)(System.Private.CoreLib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e)在Microso的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Private.CoreLib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e) System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw(System.Private.CoreLib,Version)中的ft.EntityFrameworkCore.Query.Internal.AsyncQueryingEnumerable1+AsyncEnumerator+<BufferlessMoveNext>d__10.MoveNext (Microsoft.EntityFrameworkCore.Relational, Version=2.0.3.0, Culture=neutral, PublicKeyToken=adb9793829ddae60) at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e) at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e) at Microsoft.EntityFrameworkCore.Storage.Internal.SqlServerExecutionStrategy+<ExecuteAsync>d__72.MoveNext(Microsoft.EntityFrameworkCore.SqlServer,Version = 2.0.3.0,Culture = neutral,PublicKeyToken = adb9793829ddae60) System.Runtime.CompilerServices上的System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Private.CoreLib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e)中的= 4.0.0.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e) .TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Private.CoreLib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e)at Microsoft.EntityFrameworkCore.Query.Internal.AsyncQueryingEnumerable1+AsyncEnumerator+<MoveNext>d__9.MoveNext (Microsoft.EntityFrameworkCore.Relational, Version=2.0.3.0, Culture=neutral, PublicKeyToken=adb9793829ddae60) at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e) at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e) at System.Linq.AsyncEnumerable+<FirstOrDefault_>d__1651.MoveNext(System.Interactive.Async,Version = 3.0.3000.0, System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw(System.Private.CoreLib,Version = 4.0.0.0,Culture = neutral,Public)中的Culture = neutral,PublicKeyToken = 94bc3704cddfc263) KeyToken = 7cec85d7bea7798e)System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Private.CoreLib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e),位于System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Private。 CoreLib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e)at Microsoft.EntityFrameworkCore.Query.Internal.AsyncLinqOperatorProvider + TaskResultAsyncEnumerable1+Enumerator+<MoveNext>d__3.MoveNext (Microsoft.EntityFrameworkCore, Version=2.0.3.0, Culture=neutral, PublicKeyToken=adb9793829ddae60) at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e) at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e) at System.Linq.AsyncEnumerable+SelectEnumerableAsyncIterator2 + d _7.MoveNext(System.Interactive.Async,Version = 3.0.3000.0,Culture = neutral,PublicKeyToken = 94bc3704cddfc263)在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Private.CoreLib)的System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw(System.Private.CoreLib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e) System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Privat),Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e) System.Linq.AsyncEnumerable + AsyncIterator1+<MoveNext>d__10.MoveNext (System.Interactive.Async, Version=3.0.3000.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263) at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e) at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e) at Microsoft.EntityFrameworkCore.Query.Internal.AsyncLinqOperatorProvider+ExceptionInterceptor1 + EnumeratorExceptionInterceptor + d__5.MoveNext(Microsoft.EntityFrameworkCore,Version = 2.0.3.0,Culture = neutral,PublicKeyToken = adb9793829ddae60)e.CoreLib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e) )

asp.net-core azure-sql-database identityserver4 ef-core-2.0
1个回答
0
投票

这听起来很像报道的问题here有一个解决方法。

此问题的临时解决方案是:

1)从添加到Web.config文件的路径中确定vsinstr.exe的位置并删除vsinstr.exe

2)将vsinstr.legacy.exe重命名为同一目录中的vsinstr.exe

3)重建您的解决方案

我们在下一版本的15.9中回滚了导致此问题的更改,因此您的应用程序应该正常运行。

您能否确认这是否与您所看到的问题相同?谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.