2012-07-18 88 views
2

我有一个使用实体框架4.3连接到Oracle数据库的ASP.NET 4.0应用程序。因为我们使用标准方法,因此开发环境中的连接不成问题。连接字符串由Visual Studio生成。Oracle使用实体框架和LDAP的连接字符串

问题是,在生产和验收环境中,我们必须使用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> 
+0

你的意思是你正在使用LDAP做Windows身份验证?或者我误解了你的问题。你是否尝试过“user id = /”和“password =”(没有密码,并且用户名为正斜杠) – 2012-07-18 20:44:52

+0

我还没有尝试过任何东西,因为我必须在接受env时进行此操作。已经在使用中(应用程序连接到SQL Server和Oracle以及Oracle的部分应用程序不工作),我的实验时间有限。 – 2012-07-19 08:33:10

回答

3

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

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> 
+0

在连接字符串中设置用户名/密码是否会影响LDAP?或者它做LDAP然后否定用户名/密码? – 2012-07-27 12:10:17

+0

因为我连接到多个数据库测试,因此,我为每个数据库使用不同的密码,所以按照我的理解,LDAP只将数据库名称映射到特定的机器/ Oracle实例,因此可以更改Oracle计算机而无需更新客户机连接字符串。 – 2012-07-27 12:50:52

+0

整洁,很高兴知道。 – 2012-07-27 13:30:00

0

此连接字符串,它将更改为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> 
+0

我没有使用Windows身份验证。这是一些Unix或Oracle LDAP,其中有很多Oracle数据库。 – 2012-07-27 09:51:13

0

ü还可以修改需要在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