【发布时间】:2017-02-28 07:39:26
【问题描述】:
在数据库升级到 64 位 12C 后,我的一个 Web 应用程序中出现了一些 32 位/64 位问题,在研究了我遇到的问题后,几乎普遍的答案是“使用托管驱动程序,不用担心 32/64位问题”。所以我做了。我
- 从here 下载并安装了“ODAC 12c 第 4 版和 Oracle Developer Tools for Visual Studio (12.1.0.2.4)”,
- 删除了对 Oracle.Web 和 Oracle.DataAccess 的引用(非托管 drivers)在我的应用程序中添加了对新托管驱动程序“Oracle.ManagedDataAccess”的引用
- 更改了所有“使用Oracle.Web”、“使用Oracle.DataAccess.Client” 到“使用 Oracle.ManagedDataAccess.Client”
但我找不到一份文档告诉我需要如何修改 Web 配置文件以使用托管驱动程序。
我需要对
是否需要添加其他部分才能使用托管驱动程序?
我需要在成员资格和角色提供者部分进行哪些更改?现有提供程序引用 Oracle.Web.Security.OracleRoleProvider,一旦升级到托管版本,所有对 Oracle.Web 和 Oracle.DataAccess 的引用都必须删除。
如果有人经历过痛苦,请分享您对这些问题的解决方案,以及解决这些问题后我可能遇到的任何其他问题。
这是我认为需要更改/删除的当前网络配置文件示例:
<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>
【问题讨论】:
-
我确信有人开发了一个使用表单身份验证(使用角色和成员资格提供程序)并且还使用 Oracle 托管驱动程序 (Oracle.ManagedDataAccess) 的 Web 应用程序。如果在添加对 Oracle.ManagedDataAccess 的引用后从应用程序中删除了对 Oracle.DataAccess 和 Oracle.Web 的引用,我只需要知道如何修改 web.config 的提供程序部分。
-
显然不可能!刚刚看到此链接community.oracle.com/thread/3589539?start=0&tstart=0,其中有人发布了“4. 提供商不支持 Oracle.ManagedDataAccess.Client”作为他的问题之一,Oracle 团队的回应是:“目前,托管 ODP.NET 不支持提供商”。
标签: asp.net web-config oracle12c