【问题标题】:Error while hosting WCF Service托管 WCF 服务时出错
【发布时间】:2019-01-26 05:57:27
【问题描述】:

我正在尝试在 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>

这个错误的原因是什么?

【问题讨论】:

  • 在 web.config 中添加了这个
  • 您使用的是 64 位操作系统吗?

标签: .net wcf hosting


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    机器配置:

    &lt;section name="oracle.dataaccess.client" type="System.Data.Common.DbProviderConfigurationHandler,System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />

    【讨论】:

      【解决方案3】:

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

      <configSections>
        <section name="oracle.manageddataaccess.client"
          type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.112.3.50, Culture=neutral, PublicKeyToken=89b483f429c47342" />
      </configSections>
      

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

          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 包并更正连接字符串的问题。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-04-14
            • 2011-05-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多