Dyl*_*ams 27 .net c# asp.net oracle entity-framework
我有一个在本地,我们的开发服务器和我们的生产服务器上工作的项目.
当我尝试在测试服务器上运行它时,我得到下面的错误,除了茫然地盯着我的屏幕,我不知道该怎么办.提示?将问题追溯到其来源的流程?
我已经为Oracle 12.2等安装了NuGet包.
无法从程序集"Oracle.ManagedDataAccess,Version = 4.121.2.0,Culture = neutral,PublicKeyToken = 89b483f429c47342"加载类型"OracleInternal.Common.ConfigBaseClass".描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.
异常详细信息:System.TypeLoadException:无法从程序集"Oracle.ManagedDataAccess,Version = 4.121.2.0,Culture = neutral,PublicKeyToken = 89b483f429c47342"加载类型"OracleInternal.Common.ConfigBaseClass".
来源错误:
在执行当前Web请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息.
堆栈跟踪:
[TypeLoadException:无法从程序集'Oracle.ManagedDataAccess,Version = 4.121.2.0,Culture = neutral,PublicKeyToken = 89b483f429c47342'加载类型'OracleInternal.Common.ConfigBaseClass'.]
Oracle.ManagedDataAccess.EntityFramework.EntityFrameworkProviderSettings.Oracle.ManagedDataAccess.EntityFramework .EFProviderSettings.IEFProviderSettings.get_TracingEnabled()+0 Oracle.ManagedDataAccess.EntityFramework.EFProviderSettings.InitializeProviderSettings()+111 Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices..ctor()+629 Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices..cctor()+ 28[TypeInitializationException:'Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices'的类型初始值设定项引发异常.]
Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices.get_Instance()+24
Web.Config中包含以下块:
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</configSections>
Run Code Online (Sandbox Code Playgroud)
和
<oracle.manageddataaccess.client>
<version number="*">
<dataSources>
<dataSource alias="PVMDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=pdxcludds108.pacificorp.us)(PORT=11086))(CONNECT_DATA=(SERVICE_NAME=DDS1086.PACIFICORP.US))) " />
</dataSources>
</version>
</oracle.manageddataaccess.client>
<connectionStrings>
<add name="OracleDbContext" providerName="Oracle.ManagedDataAccess.Client" connectionString="User Id=USERID;Password=WORKINGPASSWORD;Data Source=PVMDataSource" />
<add name="PVMEntities" connectionString="metadata=res://*/Models.PVMModel.csdl|res://*/Models.PVMModel.ssdl|res://*/Models.PVMModel.msl;provider=Oracle.ManagedDataAccess.Client;provider connection string="DATA SOURCE=pdxcludds108.pacificorp.us:11086/DDS1086.PACIFICORP.US;PASSWORD=XXXXXXX;PERSIST SECURITY INFO=True;USER ID=XXX"" providerName="System.Data.EntityClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
注意:此服务器上还有其他项目,它们只是为.Net使用不同版本的Oracle客户端.其他人都没有使用托管驱动程序.我正在寻找一种方法来深入研究这个错误,一些暗示该类型的来源和加载方式.
Jan*_*las 25
Oracle.ManagedDataAccess
NuGet与服务器上安装的(通过Oracle客户端安装)之间存在冲突,并且已在GAC中注册.
Oracle.ManagedDataAccess
从GAC 取消注册,您将摆脱错误:运行命令行并导航到目录:
{Oracle home}\product\{version}\client_64\ODP.NET\managed\x64
你应该找到OraProvCfg.exe
文件.运行以下命令以Oracle.ManagedDataAccess
从GAC 取消注册:
OraProvCfg /action:ungac /providerPath:Oracle.ManagedDataAccess
Run Code Online (Sandbox Code Playgroud)
g.b*_*eze 20
您必须删除GAC 中的Oracle.ManagedDataAccess程序集(C:\ Windows\Microsoft.NET\assembly ...)
使用命令工具
gacutil
删除程序集:C:\ Program Files(x86)\ Microsoft SDKs\Windows\YOUR_VERSION\bin\NETFX 4.6.1工具> gacutil/u Oracle.ManagedDataAccess
能够通过将项目中的引用替换为Oracle.ManagedDataAccess和Oracle.ManagedDataAccess.EntityFramework从包管理器安装的那些引用到oracle客户端安装程序安装的引用来修复它.版本相同,但这些DLL上的内部版本号不同
正如其他人所说,您需要从GAC中删除Oracle.ManagedDataAccess。
我运行{Oracle home}\product\12.1.0\dbhome_1\ODP.NET\managed\x64\unconfigure.bat
,并{Oracle home}\product\12.1.0\dbhome_1\ODP.NET\managed\x836\unconfigure.bat
和它的工作
归档时间: |
|
查看次数: |
30036 次 |
最近记录: |