在将数据库升级到64位12C之后,我的一个Web应用程序中出现了一些32位/ 64位问题,在研究了我遇到的问题之后,几乎通用的答案是“使用托管驱动程序而不用担心32/64位问题“。所以我做了。我
但我找不到一个文档告诉我如何修改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>
答案 0 :(得分:1)
一些想法: 1)成员资格是Oracle.Web的一部分 - 所以你仍然需要这些引用 - 我喜欢将它添加到web.config中的运行时部分以获得良好的衡量标准:
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Oracle.Web" publicKeyToken="89b483f429c47342" />
<bindingRedirect oldVersion="0.0.0.0-4.121.2.1" newVersion="4.121.2.1" />
</dependentAssembly>
</assemblyBinding>
2)VS2015 NuGet可以帮助您安装Oracle托管客户端;但是,它可以像为Oracle.DataAccess.Client取代Oracle.ManagedDataAccess.Client一样简单。 (不要单独留下Oracle.Web!)
3)可能需要对您的ADO.net池进行额外调整(在连接字符串中) - 请参阅此处:ODP.NET error in IIS: ORA-12357 Network Session End of file
2.x驱动程序也适用于ASP.NET 2.0 - 4.x是ASP.NET 4.0 - 看起来就像是指向错误的框架。