minato128 blog

minato128の公開メモ帳です。

ODP.NET 64bit を手動で GAC に登録する

作ってもらった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 使うんじゃないんですね。

環境

Windows Server 2008R2
IIS 7.5
Oracle 11.2.0.3 64bit
ODP.NET 4.112.3.0 64bit

ついでに

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をインストールしたから?