作ってもらったAP/DBサーバー(VS2008R2)に、
ASP.NET 4.5 のウェブアプリを 64bit で動かしたくてデプロイしてみたら、
ODP.NET のアセンブリがロードできなくて動かなかった。
調べたら GAC に 2.0 は登録されてるのに 4.0 は登録されてなかった。*1
手動登録
cd C:\app\Administrator\product\11.2.0\dbhome_1\ASP.NET\bin\4 oraprovcfg /action:gac /providerpath:C:\app\Administrator\product\11.2.0\dbhome_1\ASP.NET\bin\4\Oracle.Web.dll cd C:\app\Administrator\product\11.2.0\dbhome_1\ODP.NET\bin\4 oraprovcfg /action:gac /providerpath:C:\app\Administrator\product\11.2.0\dbhome_1\ODP.NET\bin\4\Oracle.DataAccess.dll
gacutil 使うんじゃないんですね。
参考
C:\Windows\Microsoft.NET\assembly\GAC_64\Oracle.[web, DataAccess] : The Official Microsoft ASP.NET Forums
.NET 4.0 has a new GAC, why? - Stack Overflow
ついでに
DbProviderFactories.GetFactory("Oracle.DataAccess.Client")
DbProviderFactories の設定ものせときます。
Web.Config
<system.data> <DbProviderFactories> <remove invariant="Oracle.DataAccess.Client"/> <add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342" /> </DbProviderFactories> </system.data>
*1:原因は不明。.NET 4.5 のインストールをする前に、オラクル本体と一緒にODP.NETをインストールしたから?