WCF服务托管时出错。

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>

这个错误出现的原因是什么?

<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 文件中。 - user1208862
你在使用64位操作系统吗? - Gun2sh
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属性需要什么。

3
我曾经在IIS 7.5中遇到过这个问题。问题出在机器配置文件中缺少"oracle.dataaccess.client"部分。Oracle的ODP.NET安装程序应该会将此部分添加到机器配置文件中,但是它却丢失了。所以,像上面所说,您可以将缺失的部分添加到您的web.config文件或将其添加到机器配置文件中。
机器配置文件:

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


2

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

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

1
我也遇到了在64位服务器上使用IIS 7.5和32位Oracle客户端时的问题,只有在...Framework64/v4.0.30319/Config/machine.config中缺少"oracle.dataaccess.client"部分。在32位系统中已经定义了该部分。在我添加了该部分后,IIS能够加载我的应用程序中的web.config文件。因此,我建议您检查两个机器配置文件。ODAC客户端(32位/64位)只会更改其中一个。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接