在將數據庫升級到64位12C後,我的一個Web應用程序中出現了一些32位/ 64位問題,並且在研究遇到的問題後,幾乎通用的答案是「使用託管驅動程序,而不用擔心32/64位問題「。所以我做了。我使用Oracle託管驅動程序時的成員資格和角色提供者
- 下載並安裝 「ODAC 12C 4版和Oracle開發工具Visual Studio的(12.1.0.2.4)」 從here,
- 去除引用Oracle.Web和Oracle.DataAccess(非託管 司機)在我的應用程序,並添加引用新的管理驅動程序「Oracle.ManagedDataAccess」
- 改變了所有的「使用Oracle.Web」,「使用Oracle.DataAccess.Client」 爲「使用Oracle.ManagedDataAccess.Client」
但是我找不到一個文檔告訴我如何修改web配置文件以使用受管驅動程序。
是否需要對<connectionStrings>節進行任何更改?
我是否需要添加其他部分以使用託管驅動程序?
我需要在成員資格和角色提供者部分更改哪些內容?現有的提供者引用Oracle.Web.Security.OracleRoleProvider,一旦升級到託管版本,所有對Oracle.Web和Oracle.DataAccess的引用都必須刪除。
如果有人已經經歷了這些痛苦,請分享您的解決方案以解決這些問題,以及任何其他可能會遇到的問題。
這是當前Web配置文件,我認爲需要改變/刪除的樣本:
<connectionStrings>
<clear/>
<add name="MSAConnectionString" connectionString="User Id=Some_User;Password=SomePwd;Data Source=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.20.30.40)(PORT = 1521)))(CONNECT_DATA =(SID = MSA))); Min Pool Size=10;Max Pool Size=300;Incr Pool Size=5;Decr Pool Size=2;"/>
</connectionStrings>
<compilation defaultLanguage="c#" debug="true" targetFramework="4.0">
<assemblies>// next two line will have to be removed, since DLLs no longer referenced
<add assembly="Oracle.DataAccess, Version=2.121.2.0, Culture=neutral, PublicKeyToken=89B483F429C47342"/>
<add assembly="Oracle.Web, Version=2.121.2.0, Culture=neutral, PublicKeyToken=89B483F429C47342"/>
<add assembly="System.DirectoryServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.DirectoryServices.AccountManagement, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
</assemblies>
</compilation>
<membership defaultProvider="DSSOracleMembershipProvider">
<providers>
<add name="DSSOracleMembershipProvider" type="Oracle.Web.Security.OracleMembershipProvider, Oracle.Web, Version=2.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionStringName="MSAConnectionString" applicationName="/" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="4" minRequiredPasswordLength="9" passwordAttemptWindow="8"/>
</providers>
</membership>
<roleManager enabled="true" defaultProvider="DSSOracleRoleProvider">
<providers>
<add name="DSSOracleRoleProvider" type="Oracle.Web.Security.OracleRoleProvider, Oracle.Web, Version=2.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionStringName="MSAConnectionString" applicationName="/"/>
</providers>
</roleManager>
我確定有人開發了一個使用表單身份驗證(使用角色和成員資格提供程序)的Web應用程序,並且還使用Oracle託管驅動程序(Oracle管理數據訪問)。我只需要知道如何修改web.config的提供者部分(如果引用了Oracle.DataAccess和Oracle.Web,則在添加對Oracle.ManagedDataAccess的引用後將從應用程序中刪除)。 – NoBullMan
顯然不可能!剛剛看到這個鏈接https://community.oracle.com/thread/3589539?start=0&tstart=0有人發佈「4.提供商不支持Oracle.ManagedDataAccess.Client」,因爲他的問題和Oracle團隊的迴應是:「目前,提供商不支持託管的ODP.NET」。 – NoBullMan