尝试获取类型数据库实例时发生激活错误

时间:2019-02-13 15:34:36

标签: web-services enterprise-library

此问题与使用Microsoft.Practices.EnterpriseLibrary的Web服务应用程序有关。

当我测试其中一个API并进入代码的DAL部分时,我会在此时出现错误:

using Microsoft.Practices.EnterpriseLibrary.Data;
using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;
....
Database oDatabase = null;
....
oDatabase = EnterpriseLibraryContainer.Current.GetInstance<Database>();

web.config看起来像:

<configSections>
    <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=5.0.505.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</configSections>
<dataConfiguration defaultDatabase="DefaultConnectionString">
    <providerMappings>
          <add databaseType="EntLibContrib.Data.OdpNet.OracleDatabase, EntLibContrib.Data.OdpNet, Version=5.0.505.0, Culture=neutral, PublicKeyToken=null" name="Oracle.DataAccess.Client"/>
    </providerMappings>
</dataConfiguration>
<connectionStrings>
    <add name="DefaultConnectionString" connectionString="Data Source=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 1.2.3.4)(PORT = 1521)))(CONNECT_DATA =(SID = MySID)));User Id=some_id;Password=some_pwd;" providerName="Oracle.DataAccess.Client"/>
</connectionStrings>

例外是:

尝试获取数据库类型为键“ \” \”的实例时发生激活错误

并且内部异常显示:

解决依赖关系失败

type =“ Microsoft.Practices.EnterpriseLibrary.Data.Database”,名称=“(无)”。

在解决期间发生异常。

异常是:InvalidOperationException-无法构造数据库类型。您必须配置容器以提供该值。

发生例外时,容器为:\ r \ n \ r \ n解决Microsoft.Practices.EnterpriseLibrary.Data.Database,(无)

我搜索了此问题,并尝试了从检查DLL版本到对web.config进行各种修改的建议,但仍然出现错误。我认为它们的关键不是错误消息本身,而是内部异常。

如果有人遇到相同的问题可以告诉我解决方案是什么,或者有一位专家指导我向正确的方向发展,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

此问题似乎是由于使用了不正确的Oracle客户端版本引起的。我有12c客户端,包括32位和64位,但是我需要的是11g。安装11g客户端后,我不再收到错误。