【发布时间】:2018-01-27 01:16:02
【问题描述】:
我在运行我的数据库应用程序时遇到以下错误异常:
''Oracle.DataAccess.Client.OracleConnection' 的类型初始化程序引发了异常。' ConfigurationErrorsException:无法识别的配置部分 oracle.dataaccess.client。
多年来,我一直在使用相同的技术来处理 Oracle 集合用户定义类型 (UDT),但在升级到 Oracle 12c 后,我在尝试打开 Oracle 连接时收到上述消息。
相关信息:
1) Visual Studio 2017
2) Oracle 12c 第 2 版(这是我的开发系统上唯一的 Oracle 软件)
3) 开发 CPU:AMD Phenom
4) Windows 10 Pro(64 位)全新安装
5) 语言:VB.NET
6) Oracle.DataAccess(4.122.1.0 - 64 位)我的开发 CPU 上只有这个 .dll 的一个副本。 (我已确认 GAC 中没有副本) 这是一个非托管的 dll;我很想使用托管版本,但 Oracle 没有在托管版本中包含我需要处理 UDT 的接口。
7) 如果 app.config 文件不存在,我的应用程序将正常运行。
8) 我提供了一个带有 app.config 文件的“基本”应用示例 (就像完整的应用程序一样,它在没有配置文件的情况下运行而不会出错,但在配置文件存在时会失败)
8) 配置文件的设置部分是 12c SYSTEM UDT 实现的示例,但即使省略了 UDT 部分,此小应用程序也会失败并显示相同的错误消息。
9) 目标 CPU:x64
10) 简单代码示例和配置文件:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'
Dim cn As New Oracle.DataAccess.Client.OracleConnection
'
' Change the following to your connection string
Dim cs As String = "Data Source=orcl;User Id=system; Password=myOraclePW;"
'
cn.ConnectionString = cs
'
cn.Open()
'
MessageBox.Show("Oracle.DataAccess.Client.OracleConnection Open")
'
cn.Close()
'
End Sub
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<configuration>
<startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/></startup>
<oracle.dataaccess.client>
<settings><add name="OraSYSTEM.SYSTEM.AQ$_QUEUES.AQ$_SUBSCRIBERS"
value="udtMapping factoryName='myApp.ListFactory_1, myApp' typeName='AQ$_SUBSCRIBERS' schemaName='userPW' dataSource='SYSTEM'"/>
</settings>
</oracle.dataaccess.client>
</configuration>
这是我第一次向在线论坛提交问题,所以我希望是最好的!我相信自 Oracle 11g 和/或 Visual Studio 2010 以来发生了一些变化,我并没有做任何事情来适应这些变化,但对于我的生活,我不知道它是什么。 (我希望这是我忽略的一些小事和/或愚蠢的事情,但我已经用完了“试试这个”的想法)
感谢您的帮助和问候,
格雷格
【问题讨论】:
标签: connection runtime-error app-config oracle12c odp.net