【问题标题】:Connection string for Oracle using Entity Framework and LDAP使用实体框架和 LDAP 的 Oracle 连接字符串
【发布时间】:2014-11-18 21:46:06
【问题描述】:

我有一个使用 Entity Framework 4.3 连接到 Oracle 数据库的 ASP.NET 4.0 应用程序。开发环境上的连接不是问题,因为我们使用标准方法。连接字符串由 Visual Studio 生成。

问题是在生产和验收环境中我们必须使用 LDAP。我已经验证了连接,并且可以使用 Oracle 的 SQL Developer 中的 LDAP 进行连接。

我需要有关 web.config 中连接字符串语法的帮助。它应该是什么样子?我找不到任何示例,并且在生产和验收方面我没有 Visual Studio 来查看它是否可以自动生成一些东西。

更新:
我需要将连接到本地 Oracle Express 的连接字符串更改为使用 LDAP 的连接字符串的语法

<connectionStrings>
    <add name="VoccDbContext" connectionString="metadata=res://*/Entities.Vocc.VoccModel.csdl|res://*/Entities.Vocc.VoccModel.ssdl|res://*/Entities.Vocc.VoccModel.msl;provider=Oracle.DataAccess.Client;provider connection string=&quot;DATA SOURCE=localhost:1521;PASSWORD=somePassKey;PERSIST SECURITY INFO=True;USER ID=someUser&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>

【问题讨论】:

  • 您的意思是您正在使用 LDAP 进行 Windows 身份验证?还是我误解了你的问题。您是否尝试过“user id=/”和“password=”(无密码,用户 id 为正斜杠)
  • 我还没有尝试任何东西,因为我必须在验收环境中执行此操作。已经在使用(应用程序连接到 SQL Server 和 Oracle,应用程序的 Oracle 部分不起作用),我的实验时间有限。

标签: c# oracle entity-framework ldap connection-string


【解决方案1】:

如果其他人需要它来回答。解决方法比较简单:

LDAP.ORA 文件必须使用正确的 LDAP 参数进行修改

DIRECTORY_SERVERS=(tnsnames.somesite.org:389:636)
DEFAULT_ADMIN_CONTEXT="dc=site,dc=com"
DIRECTORY_SERVER_TYPE=OID

和没有LDAP的连接字符串的情况类似

 <connectionStrings>
    <add name="VoccDbContext" connectionString="metadata=res://*/Entities.Vocc.VoccModel.csdl|res://*/Entities.Vocc.VoccModel.ssdl|&#xD;&#xA;        res://*/Entities.Vocc.VoccModel.msl;provider=Oracle.DataAccess.Client;provider connection string=&quot;DATA SOURCE=sameDbName;PASSWORD=somePass;USER ID=someUser;&quot;"         providerName="System.Data.EntityClient" />
</connectionStrings>

【讨论】:

  • 在连接字符串中设置用户名/密码是否会影响 LDAP?还是它执行 LDAP 然后否定用户名/密码?
  • 因为我连接到多个数据库 test,acc,prod 为每个我使用不同的密码,所以据我了解 LDAP 仅将数据库名称映射到特定的机器/Oracle 实例,因此可以更改 Oracle 机器而不需要更新客户端连接字符串。
  • 你还需要在oraclehome文件夹/network/admin下有一个sqlnet.ora文件,内容如下。
【解决方案2】:

如果您使用“/”作为用户名并将密码留空,它将更改为 Windows 身份验证。

这是关于 Connecting to the Oracle Database Using Windows Authenticationthis question 的 MSDN 文章解决了用户无法使用 ODP.NET 连接到 Oracle 数据库的问题及其修复。

这是我的一个 App.Config 连接字符串使用 Windows 身份验证连接的样子:

 <connectionStrings>
      <add name="EntityFrameworkEntities" connectionString="metadata=res://*/EntityFrameworkModel.csdl|res://*/EntityFrameworkModel.ssdl|res://*/EntityFrameworkModel.msl;provider=Oracle.DataAccess.Client;provider connection string=&quot;DATA SOURCE=EntityFrameworkDatabase;PASSWORD=;USER ID=/&quot;" providerName="System.Data.EntityClient"/>
 </connectionStrings>

【讨论】:

  • 我没有使用 Windows 身份验证。它是一些 Unix 或 Oracle LDAP,其中包含许多 Oracle 数据库。
【解决方案3】:

你还需要在oraclehome文件夹/network/admin下有一个sqlnet.ora文件,内容如下

# sqlnet.ora Network Configuration File

SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (LDAP,TNSNAMES,EZCONNECT)

和具有以下内容的 LDAP.ora

DEFAULT_ADMIN_CONTEXT = "dc=world"
DIRECTORY_SERVERS = (server1.x.com:389:636, server2.x.com:389:636)
DIRECTORY_SERVER_TYPE = OID

Ldap.ora help

【讨论】:

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