2016-07-25 17 views
0

在將數據庫升級到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> 
+0

我確定有人開發了一個使用表單身份驗證(使用角色和成員資格提供程序)的Web應用程序,並且還使用Oracle託管驅動程序(Oracle管理數據訪問)。我只需要知道如何修改web.config的提供者部分(如果引用了Oracle.DataAccess和Oracle.Web,則在添加對Oracle.ManagedDataAccess的引用後將從應用程序中刪除)。 – NoBullMan

+0

顯然不可能!剛剛看到這個鏈接https://community.oracle.com/thread/3589539?start=0&tstart=0有人發佈「4.提供商不支持Oracle.ManagedDataAccess.Client」,因爲他的問題和Oracle團隊的迴應是:「目前,提供商不支持託管的ODP.NET」。 – NoBullMan

回答

0

的一點想法: 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 - 看起來像指向錯誤的框架。

相關問題