3

我正在尝试在 IIS 中托管 WCF 服务,但出现以下错误。“无法读取配置节‘oracle.dataaccess.client’,因为它缺少节声明”

我添加了以下程序集。

add assembly="Oracle.DataAccess, Version=2.111.7.20, Culture=neutral, PublicKeyToken=89B483F429C47342"

并宣布

<oracle.dataaccess.client>
    <settings>
        <add name="SubbType" value="udtMapping factoryName='Project.TypeObjects.TYP_SUBMISSION_PROCESSFactory, PublicKeyToken=NULL'            typeName='TYP_SUBMISSION_PROCESS' schemaName='ABC' dataSource='XYZ'"/>       
    </settings>
 </oracle.dataaccess.client>

这个错误的原因是什么?

4

5 回答 5

6

正如错误所说,您缺少部分声明。像这样的东西:

<configSections>
    <section name="oracle.dataaccess.client"
             type="Oracle.DataAccess.ClientSettings, Oracle.DataAccess, Version=2.111.7.20, Culture=neutral, PublicKeyToken=89B483F429C47342" />
</configSections>

type请注意:这只是一个示例,我不知道在您的特定情况下该属性究竟需要什么。

于 2012-04-26T07:49:14.230 回答
3

我在 IIS 7.5 上遇到了这个问题。缺少的是 machine.config 中的“oracle.dataaccess.client”部分。Oracle 的 ODP.NET 安装程序应该将此部分添加到 machine.config,但它丢失了。因此,如上所述,您可以将缺少的部分添加到 web.config 或将缺少的部分添加到 machine.config。

机器配置:

<section name="oracle.dataaccess.client" type="System.Data.Common.DbProviderConfigurationHandler,System.Data,版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089" />

于 2012-08-31T18:06:15.233 回答
2

添加此部分声明对我有用:

<configSections>
  <section name="oracle.manageddataaccess.client"
    type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.112.3.50, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</configSections>
于 2015-04-21T13:06:15.820 回答
1

我在 64 位服务器和 32 位 oracle 客户端上的 IIS 7.5 也遇到了这个问题,并且“oracle.dataaccess.client”部分仅在 ...Framework64/v4.0.30319/Config/machine.config 中丢失。在 32 位中有定义的部分。在我添加部分 IIS 后,我可以在我的应用程序中加载 web.config。

所以我建议你检查两台机器配置。ODAC客户端(32bit/64bit)只改动了一个。

于 2013-03-12T09:01:58.527 回答
0

Oracle.DataAccess.Client 是较旧的 oracle 驱动程序。在我的情况下,我有一个使用这些旧驱动程序的应用程序,我没有在我的机器上安装它。新的托管驱动程序可以作为 nuget 包安装,我相信这不需要在您的机器上安装驱动程序或更改 machine.config。

我用来消除错误的步骤是(这都在我的实体框架项目中,我能够通过 LINQPad 进行连接)。

  1. 安装 Oracle.ManagedDataAccess nuget 包,版本 12.2.1100。有更新的版本,没试过。
  2. 将连接字符串从 Oracle.DataAccess.Client 更改为 Oracle.ManagedDataAccess.Client。
  3. 通过编辑 XML 更改了我的 EDMX 文件。在顶部它引用了 Oracle.DataAccess.Client,将其更改为引用 Oracle.ManagedDataAccess.Client

这些步骤允许我使用 LINQPad 创建一个新连接并加载数据模型和 app.config 文件并从基础表中读取。我希望这对你有用。更改您的 WCF 项目也应该是安装 nuget 包并更正连接字符串的问题。

于 2019-01-25T21:57:27.847 回答