托管WCF服务时出错

时间:2012-04-26 07:35:10

标签: .net wcf hosting

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

出现此错误的原因是什么?

5 个答案:

答案 0 :(得分:5)

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

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

请注意:这只是一个示例,我不知道具体案例中type属性究竟需要什么。

答案 1 :(得分:3)

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

Machine.config中:

  

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

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

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

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

答案 4 :(得分: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软件包并更正连接字符串的问题。