2012-07-18 140 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

相關問題