【发布时间】:2015-08-05 02:19:54
【问题描述】:
我有一个可以在本地、我们的开发服务器和我们的生产服务器上运行的项目。
当我尝试在测试服务器上运行它时,我收到以下错误,除了茫然地盯着我的屏幕之外,我不知道该怎么办。提示?追查问题根源的流程?
我已经为 Oracle 12.2 等安装了 NuGet 包。
无法从 程序集'Oracle.ManagedDataAccess,版本=4.121.2.0, 文化=中性,PublicKeyToken=89b483f429c47342'。说明:一个 当前 web 执行过程中发生未处理的异常 要求。请查看堆栈跟踪以获取有关 错误以及它起源于代码的位置。
异常详细信息:System.TypeLoadException:无法加载类型 来自程序集的“OracleInternal.Common.ConfigBaseClass” 'Oracle.ManagedDataAccess,版本=4.121.2.0,文化=中性, PublicKeyToken=89b483f429c47342'。
来源错误:
在执行过程中产生了一个未处理的异常 当前的网络请求。有关原产地和位置的信息 可以使用下面的异常堆栈跟踪来识别异常。
堆栈跟踪:
[TypeLoadException: 无法加载类型 来自程序集的“OracleInternal.Common.ConfigBaseClass” 'Oracle.ManagedDataAccess,版本=4.121.2.0,文化=中性, PublicKeyToken=89b483f429c47342'.]
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>
与
<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>
注意:还有其他项目在此服务器上运行,它们只是使用不同版本的 Oracle 客户端用于 .Net。其他人都没有只使用托管驱动程序。我正在寻找一种方法来挖掘这个错误,一些关于该类型的来源和加载位置的提示。
【问题讨论】:
-
您是如何安装 Oracle 库的?
-
我的理解是,通过托管数据访问,您不需要安装 Oracle 库,指向它们的指针包含在 Web.Config 中。编辑问题以包含该信息。
-
我不是指 Oracle 客户端。我的意思是.NET 使用的Oracle DLL。你是怎么安装的?
-
我使用了标准的 NuGet 包。 “官方 Oracle ODP.NET 托管实体框架驱动程序”及其伙伴托管驱动程序。
-
测试服务器上的 IIS 应用程序池是否配置为使用与 dev 和 prod 中相同版本的 .net 框架?这是这类事情的常见罪魁祸首。
标签: c# asp.net .net oracle entity-framework