spring.net与OracleODP结合时发生的版本问题

来源:互联网 发布:域名注册机构查询 编辑:程序博客网 时间:2024/05/16 00:28

初步学习在vs下搭建spring.net,dbprovider使用OracleODP方式


更多dbprovider名称可参照 http://www.springframework.net/docs/1.3.0/reference/html/dbprovider.html

当执行到 IApplicationContext ctx = ContextRegistry.GetContext();

出现如下异常:

System.ServiceModel.FaultException`1[System.ServiceModel.ExceptionDetail]: Error creating context 'spring.root': Error thrown by a dependency of object 'OracleODP-11-2.0' defined in 'assembly [Spring.Data, Version=1.3.1.40711, Culture=neutral, PublicKeyToken=65e474d141e25e07], resource [Spring.Data.Common.dbproviders.xml] line 375' : Unsatisfied dependency expressed through constructor argument with index 2 of type [System.Type] : Could not convert constructor argument value [Oracle.DataAccess.Client.OracleConnection, Oracle.DataAccess, Version=2.111.7.20, Culture=neutral, PublicKeyToken=89b483f429c47342] to required type [System.Type] : Cannot convert property value of type [System.String] to required type [System.Type] for property ''.

 while resolving 'constructor argument with name dbmetadata' to 'Spring.Data.Common.DbMetadata#3A0FBB9' defined in 'assembly [Spring.Data, Version=1.3.1.40711, Culture=neutral, PublicKeyToken=65e474d141e25e07], resource [Spring.Data.Common.dbproviders.xml] line 375' (Fault Detail is equal to An ExceptionDetail, likely created by IncludeExceptionDetailInFaults=true, whose value is:

System.Configuration.ConfigurationErrorsException: Error creating context 'spring.root': Error thrown by a dependency of object 'OracleODP-11-2.0' defined in 'assembly [Spring.Data, Version=1.3.1.40711, Culture=neutral, PublicKeyToken=65e474d141e25e07], resource [Spring.Data.Common.dbproviders.xml] line 375' : Unsatisfied dependency expressed through constructor argument with index 2 of type [System.Type] : Could not convert constructor argument value [Oracle.DataAccess.Client.OracleConnection, Oracle.DataAccess, Version=2.111.7.20, Culture=neutral, PublicKeyToken=89b483f429c47342] to required type [System.Type] : Cannot convert property value of type [System.String] to required type [System.Type] for property ''.

 while resolving 'constructor argument with name dbmetadata' to 'Spring.Data.Common.DbMetadata#3A0FBB9' defined in 'assembly [Spring.Data, Version=1.3.1.40711, Culture=neutral, PublicKeyToken=65e474d141e25...).


出现异常时环境配置情况,安装oracle 11g32位客户端,安装ODAC112040 32位中odp.net4,使用.net4


经过多次尝试,发现有如下解决方案,因多次尝试,环境变化情况不唯一,故只能做简单如下猜测:

1、卸载odp.net4,安装odp.net20

2、使用gacutil.exe添加OracleDataAccess.dll,注意存在于C:\Windows\assembly和C:\Windows\Microsoft.NET\assembly下的区别,猜测vs实际读取的并非项目bin路径下的Oracle.DataAccess.dll,而是上述两个路径中某一个。

3、设置项目属性——生成——目标平台x86


个人认为第2钟原因可能性较大

0 0