C# 带有oracle 11g的.net实体框架

C# 带有oracle 11g的.net实体框架,c#,oracle,entity-framework,oracle11g,C#,Oracle,Entity Framework,Oracle11g,我正在使用实体框架和oracle提供程序(oracle.ManagedDataAccessDTC) 从VisualStudio运行它时一切正常,但是当我将它发布到IIS时,我收到一个连接错误异常 这是我的网络配置,它在visual studio上运行良好: <?xml version="1.0"?> <configuration> <system.web> <compilation debug="true" targetFram

我正在使用实体框架和oracle提供程序(oracle.ManagedDataAccessDTC)

从VisualStudio运行它时一切正常,但是当我将它发布到IIS时,我收到一个连接错误异常

这是我的网络配置,它在visual studio上运行良好:

<?xml version="1.0"?>
<configuration>

    <system.web>
        <compilation debug="true" targetFramework="4.0" />
    </system.web>
  <connectionStrings>
    <add name="Entities" connectionString="metadata=res://*/Model.Model.csdl|
         res://*/Model.Model.ssdl|
         res://*/Model.Model.msl;
         provider=Oracle.ManagedDataAccess.Client;
         provider connection string='DATA SOURCE=ORCL;PASSWORD=giovanni;USER ID=DB_ES'" providerName="System.Data.EntityClient" />
  </connectionStrings>
</configuration>

这是我在IIS上遇到的错误:

Server Error in '/EA' Application.

    ORA-12154: TNS:não foi possível resolver o identificador de conexão especificado

    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

    Exception Details: OracleInternal.Network.NetworkException: ORA-12154 could not resolve the connect identifier specified

    Source Error: 


    Line 24:         public List<CADASTRO> GetCadastroBy(string CPF, string Cartao)
    Line 25:         {
    Line 26:             return ent.CADASTRO.Where(x => x.CPF.Equals(CPF) && x.NUMEROSEUCARTAO.Equals(Cartao)).Select(x => x).ToList<CADASTRO>();
    Line 27:         }
“/EA”应用程序中的服务器错误。 ORA-12154:TNS:não foi possível resolver o identificator de conexão specificiado 描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源。 异常详细信息:OracleInternal.Network.NetworkException:ORA-12154无法解析指定的连接标识符 源错误: 第24行:公共列表GetCadastroBy(字符串CPF、字符串Cartao) 第25行:{ 第26行:返回ent.CADASTRO.Where(x=>x.CPF.Equals(CPF)和&x.numerosucartao.Equals(Cartao))。选择(x=>x.ToList(); 第27行:} 来自sql plus的查询工作正常

有什么想法吗,伙计们

解决方案:

  <oracle.manageddataaccess.client>
    <version number="4.121.1.0">
      <settings>
        <setting name="TNS_ADMIN" value="C:\app\giovanni.saraiva\product\11.2.0\dbhome_2\network\admin"/>
      </settings>
    </version>
  </oracle.manageddataaccess.client>


在webconfig上。

托管驱动程序似乎无法解析TNS名称。 您应该确保配置正确(请参阅)

例如:

<oracle.manageddataaccess.client>
  ...
  <settings>
    ...
    <setting name="TNS_ADMIN" value="C:\path\where\TNSNAMESFILE\is"/>
    ...
  </settings>
  ...
</oracle.manageddataaccess.client>

另外,我注意到您提到Oracle.ManagedDataAccessDTC是托管驱动程序。请注意,Oracle.ManagedDataAccessDTC实际上是为分布式事务提供支持的组件,而主驱动程序程序集称为“Oracle.ManagedDataAccess”。

您应该隐藏任何敏感数据,如密码。是的,关于ManagedDataAccess,您是对的,我将尝试提供路径,看看会发生什么。
<system.data>
  <DbProviderFactories>

    <remove invariant="Oracle.ManagedDataAccess.Client" />
    <add name="ODP.NET, Managed Driver"
      invariant="Oracle.ManagedDataAccess.Client"
      description="Oracle Data Provider for .NET, Managed Driver"
      type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
  </DbProviderFactories>
</system.data>