ここでの問題は、.NET dllではなく、アンマネージdllです。
1台のサーバーで2つのASP.NETアプリケーションを動作させようとしています。1つはODP.NET9.xを使用して古いもので、新しいものは最新のODP.NETを使用しています。xcopyを使用して最新のODP.NETをデプロイし、新しいODPのPATH環境変数へのパスを追加しました。現在、古いアプリケーションは機能しません(おそらく、新しいdllを使用しようとします)。PATH変数からパスを削除すると、新しいアプリが機能しなくなります。OracleページのIISの下で1台のサーバーで動作させる方法を見つけましたが、動作しませんでした。おそらく、最新のODP.NETをインストールしなかったが、それをxcopiしたためです。私はそれを試してみる必要があります。
オラクルの説明:リンク:http ://www.oracle.com/technology/tech/windows/odpnet/faq.html
多くのOracleアプリケーションは、Microsoftインターネットインフォメーションサービス(IIS)で実行されます。以前は、IISは単一のプロセスアプリケーションであり、同じIISインスタンスを使用して実行中の各Webアプリケーションに異なるシステムパスを割り当てることはできませんでした。Windows Server2003上のIIS6では、IISは同じインスタンスに対して複数のプロセスをサポートします。各アプリケーションには独自のIISプロセスがあるため、各Webアプリケーションには、独自のOracleホームを持つ異なるシステムパスディレクトリを割り当てることができます。
Microsoftのドキュメントには、IISワーカープロセスの分離とアプリケーションプールに関する情報が記載されています。
同じIISサーバーで同時に実行される複数のアクティブなOracleホームをセットアップするには:1)Windows Server2003でワーカープロセス分離モードでIIS6を実行します。2)1つのバージョンのOracleクライアントを1つのアプリケーションプールに展開し、2番目のバージョンを別のアプリケーションプールに展開します。 。たとえば、OracleClient9.2.0.2とODP.NET9.2.0.2を1つのアプリケーションプールで使用することができます。また、Oracle Client9.2.0.4およびODP.NET9.2.0.4は、別のアプリケーションプールで使用できます。同じアプリケーションプールで2つのアクティブなOracleホームを使用することはできません。アクティブな各Oracleホームは、異なるプールに存在する必要があります。3)適切なOracleホームクライアントディレクトリを使用するように、各ワーカープロセスのDLLディレクトリを設定します。これを行うには、各ASP.NETアプリケーション内で、Oracle DLLが呼び出される前に、アプリケーションのライフサイクルの早い段階でSetDllDirectory(directory_name)を呼び出します。SetDllDirectory入力変数は、使用されるODP.NETバージョンのOracleホームbinディレクトリです。注:SetDllDirectoryはアンマネージド呼び出しです。