Napisałem dość skomplikowaną aplikację C#, która uzyskuje dostęp do bazy danych Oracle za pośrednictwem ODP.Net. Rozwinąłem aplikację na komputerze z Windows XP (32-bit), gdzie zainstalowałem ODAC (32-bit). Aplikacja działa bez usterki na moim komputerze programisty, ale zgłasza wyjątek na serwerze (Windows Server 2003 x64 Service Pack 2).System.Reflection.RuntimeModule.GetTypes() błąd z ODP.Net i C#
Zainstalowałem środowisko wykonawcze dla .Net framework 4.0 (dotNetFx40_Full_x86_x64.exe) na serwerze, a także ODAC - najpierw wypróbowałem z wersją 4 (11.2.0.3.0) dla systemu Windows x64, a następnie z wersją ODAC 11.2 4 (11.2.0.3.0) z Oracle Developer Tools dla Visual Studio.
Żaden z zadziałał. Wersja 32-bitowa jest nieco dalej. Przy pierwszym wywołaniu instrukcji LINQ w bazie danych pojawia się następujący komunikat.
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()
Wersja 64-bit mówi mi, że nie mają wsparcia Oracle.Access, który jest taki sam jak oryginalny komunikat o błędzie dostałem kiedy po raz pierwszy próbował uruchomić aplikację withouth ODAC na serwerze.
Czy ktokolwiek z was może mi w tym pomóc? Widziałem kilka wpisów omawiających podobne problemy i jedyną przekonującą odpowiedzią, którą widziałem było budowanie pliku wykonywalnego z ustawieniem Copy Local na TRUE dla wszystkich odniesień i, ale nawet to się nie udało. Nadal dostaję ten sam komunikat o błędzie.