无法从程序集“mscorlib”加载类型“System.Security.Principal.WindowsImpersonationContext”

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

我正在创建一个 ASP.NET API Core 应用程序来处理与 Oracle 数据库通信的 API 服务。

在运行时,当进程尝试通过 DbContext(实体框架)使用新的 Oracle 连接连接到数据库时,出现未处理的错误并强制应用程序停止。

myDbContext.Database.Connection.Open(); 

此行导致以下错误

System.TypeLoadException : '无法加载类型 来自程序集的“System.Security.Principal.WindowsImpersonationContext” 'mscorlib,版本=4.0.0.0,文化=中性,PublicKeyToken=xxx'。'

我有一个旧的但类似的项目,它使用相同的代码并且工作正常。 使用的库与 Oracle Connector 相同:Oracle.ManagedDataAccess.EntityFramework

我试过的:

  • Unistall - 重新安装 Oracle.ManagedDataAccess.EntityFramework,
  • 与其他 Oracle 连接器(Oracle.ManagedDataAccess、Oracle.ManagedDataAccess.Core)相同
  • 安装 System.Security.Principal
  • 将目标框架从 3.1 更改为 5

我首先访问此页面 'System.Security.Principal.WindowsImpersonationContext' 从程序集 'mscorlib' 尝试使用 Razor Engine 解析模板时出错 但没有找到任何可以帮助我解决这个问题的东西。

asp.net oracle entity-framework
4个回答
4
投票

对于 dot net 6,我遇到了同样的异常。只保留包:Oracle.ManagedDataAccess.Core 并删除所有其他与 oracle 相关的包,它可以工作。


2
投票

摆脱“Oracle.ManagedDataAccess”。我同时安装了“Oracle.ManagedDataAccess”和“Oracle.ManagedDataAccess.Core”。此问题很可能是因为“Oracle.ManagedDataAccess”适用于 .NET Framework 而不是 .NET Core/.NET 6.


0
投票

我有同样的问题。 .NET Core 版本与 .NET Framework 版本

Oracle.ManagedDataAccess.dll
同名,但版本号较低。因此,Visual Studio 从 GAC 而不是 NuGet 包中获取更高版本。 -> 删除 GAC 版本。


0
投票

同样的问题。我有 .NET Core/.NET2,我删除了

Oracle.ManagedDataAccess.client

并安装

Oracle.ManagedDataAccess.Core

来自 NuGet 包,但我必须选择以下版本 < 3.x that has no dependencies

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