此问题与使用microsoft.practices.enterpriselibrary的Web Service应用程序有关。
当我测试一个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>
例外是:
在尝试获取类型数据库实例时发生了激活错误,key " "
和内部异常显示:
依赖项的分辨率失败,
type =" microsoft.practices.enterpriselibrary.data.database",name ="(none)"。
例外是:
在解决时发生。异常是:InvalidOperationException-无法构建类型数据库。您必须配置容器以提供此值。
例外时,容器为: r n r n分辨Microsoft.practices.enterpriselibrary.data.data.database,(none)
我搜索了此问题,并尝试了从检查DLL版本到对Web.config进行各种修改的建议,但仍会遇到错误。我认为它们的关键不是错误消息本身,而是内部异常。
如果有人遇到相同的问题,我会很感激的是,分辨率是什么,或者是一个可以将我指向正确方向的大师。
这个问题似乎是由于使用不正确的Oracle客户端而引起的。我有12c客户,分别是32位和64位,但我需要的是11克。安装11G客户端后,我不再有错误。