ODP.Net 経由で Oracle データベースにアクセスするかなり複雑な C# アプリケーションを作成しました。ODAC (32 ビット) をインストールした Windows XP マシン (32 ビット) でアプリケーションを開発しました。アプリケーションは開発用 PC では問題なく実行されますが、サーバー (Windows サーバー 2003 x64 サービス パック 2) では例外がスローされます。
サーバーに .Net Framework 4.0 (dotNetFx40_Full_x86_x64.exe) のランタイムと ODAC をインストールしました。最初に Windows x64 のリリース 4 (11.2.0.3.0) を試し、次に ODAC 11.2 リリース 4 (11.2.0) を試しました。 0.3.0) を Oracle Developer Tools for Visual Studio と共に使用します。
どれもうまくいきませんでした。32 ビット版はさらに進化しました。データベースで LINQ ステートメントを初めて呼び出すと、次のメッセージが表示されます。
at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)
at System.Reflection.RuntimeModule.GetTypes()
at System.Reflection.Assembly.GetTypes()
at System.Data.Metadata.Edm.ObjectItemAttributeAssemblyLoader.LoadTypesFromAssembly()
at System.Data.Metadata.Edm.ObjectItemAssemblyLoader.Load()
at System.Data.Metadata.Edm.ObjectItemAttributeAssemblyLoader.Load()
at System.Data.Metadata.Edm.AssemblyCache.LoadAssembly(Assembly assembly, Boolean loadReferencedAssemblies, ObjectItemLoadingSessionData loadingData)
at System.Data.Metadata.Edm.AssemblyCache.LoadAssembly(Assembly assembly, Boolean loadReferencedAssemblies, KnownAssembliesSet knownAssemblies, EdmItemCollection edmItemCollection, Action`1 logLoadMessage, Object& loaderCookie, Dictionary`2& typesInLoading, List`1& errors)
at System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyFromCache(ObjectItemCollection objectItemCollection, Assembly assembly, Boolean loadReferencedAssemblies, EdmItemCollection edmItemCollection, Action`1 logLoadMessage)
at System.Data.Metadata.Edm.ObjectItemCollection.ImplicitLoadAssemblyForType(Type type, EdmItemCollection edmItemCollection)
at System.Data.Metadata.Edm.MetadataWorkspace.ImplicitLoadAssemblyForType(Type type, Assembly callingAssembly)
at System.Data.Objects.ObjectContext.GetTypeUsage(Type entityCLRType)
at System.Data.Objects.ObjectContext.GetEntitySetForNameAndType(String entitySetName, Type entityCLRType, String exceptionParameterName)
at System.Data.Objects.ObjectContext.CreateObjectSet[TEntity](String entitySetName)
at MyProgram.Data.DT.DTContext3.get_MYTABLE()
64 ビット バージョンでは、Oracle.Access がサポートされていないことがわかります。これは、サーバー上で ODAC を使用せずにアプリケーションを最初に実行しようとしたときに表示された元のエラー メッセージと同じです。
どなたか助けていただけませんか?同様の問題について議論しているいくつかのエントリを見てきましたが、私が見た唯一の説得力のある返信は、すべての参照に対して Copy Local を TRUE に設定して実行可能ファイルをビルドすることでしたが、それでも失敗しました。それでも同じエラー メッセージが表示されます。