0

我正在 Visual Studio 2012 上开发 C# WebService,它使用来自 oracle 数据库的数据并使用 Visual Studio 的 EntityManager 转换它们。

在我的计算机上它工作正常,但是当我在服务器 IIS 上发布它时,我得到了这个错误:

System.Web.Services.Protocols.SoapException:商店提供者工厂类型“Oracle.DataAccess.Client.OracleClientFactory”未实现 IServiceProvider 接口。使用实现此接口的商店提供程序。

当我尝试使用 Entity 框架在我的数据库上建立连接并且我不知道如何查看此问题以解决它时,就会发生这种情况。

数据

我使用 Oracle.DataAccess v 4.112.3 和 .NETFramework 4.5

这是我的 web.config 的一部分,带有连接字符串

  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v11.0" />
      </parameters>
    </defaultConnectionFactory>
  </entityFramework>
<connectionStrings>
        <add name="EntitiesCCMX" connectionString="metadata=res://*/ModelCCMX.csdl|res://*/ModelCCMX.ssdl|res://*/ModelCCMX.msl;provider=Oracle.DataAccess.Client;provider connection string=&quot;data source=CCMX;password=rhcs;persist security info=True;user id=CCMX&quot;" providerName="System.Data.EntityClient" />
  <add name="HastusEntities" connectionString="metadata=res://*/ModelHASTUS.csdl|res://*/ModelHASTUS.ssdl|res://*/ModelHASTUS.msl;provider=Oracle.DataAccess.Client;provider connection string=&quot;data source=GIRO2010.WORLD;password=hastus2010;user id=HASTUS2010&quot;" providerName="System.Data.EntityClient" />
      </connectionStrings>

我已经做了什么:

  • 我在服务器上允许 32 位应用程序
  • 我在我的计算机和服务器上重新安装了 oracle
  • 我尝试在服务器上发送 oracle.DataAccess.dll
  • 我配置了在我的数据库上重定向的 oranet

如果您还需要什么,请询问。我真的被这个困住了......

编辑 :

设法“修复”它,但我不知道为什么,如果它继续工作一两天,我会发布我所做的所有事情。

无论如何,简而言之, - 我添加了 8 个 dll(oci、ociw32、Oracle.DataAccess、oraocci11、oraocciei11、oraocciocu11、OraOps11w、System.Data.OracleClient) - 我在 Machine.Config 中更改了这一行(Microsoft.NET\Framework\v4 .0.30319\配置)

    <add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />

通过这一行(版本 = 4.112.3.0)

   <add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />

我在服务器上安装了 Visual Studio Professional 2012(我认为这个安装移动了一些剧目或一些路径)

当我确定时我会回来的。

编辑2

没有接触任何东西就不再工作了。但现在这是另一个错误。

ORA-12154: TNS:could not resolve the connect identifier specified
4

1 回答 1

0

Your first problem is stated at oracle's web site http://www.oracle.com/technetwork/issue-archive/2011/11-sep/o51odt-453447.html It's the oracle version, you need newer one. The last error it's just a connection error. try to tnsping the database from the server, if it works check your connection string.

于 2014-01-30T12:32:24.027 回答