System.Reflection.RuntimeModule.GetTypes () error with ODP.Net and C #

I wrote a rather complicated C # application that accesses the oracle database through ODP.Net. I developed the application on a Windows XP machine (32-bit), where I installed ODAC (32-bit). The application runs smoothly on my development computer, but throws an exception on the server (Windows Server 2003 x64 Service Pack 2).

I installed the runtime environment for .Net framework 4.0 (dotNetFx40_Full_x86_x64.exe) on the server, as well as ODAC - first I tried with release 4 (11.2.0.3.0) for Windows x64, and then with ODAC 11.2 Release 4 (11.2.0.3. 0) with Oracle Developer Tools for Visual Studio.

None of the workers. The 32-bit version got a bit more. The first time I call the LINQ statement in the database, I get the following message.

   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()

The 64-bit version tells me that I do not have Oracle.Access support, which is the same as the original error message I received when I first tried to run the application with ODAC on the server.

Can any of you help me with this? I saw some notes discussing similar issues, and the only convincing answer I saw was to create an executable with Copy Local set to TRUE for all links, but even that failed. I still get the same error message.

+5
source share
1 answer

. , bgripka, , . ( ).

    catch (ReflectionTypeLoadException ex)
    {
        StringBuilder sb = new StringBuilder();
        foreach (Exception exSub in ex.LoaderExceptions)
        {
            sb.AppendLine(exSub.Message);
            if (exSub is FileNotFoundException)
            {
                FileNotFoundException exFileNotFound = exSub as FileNotFoundException;
                if (!string.IsNullOrEmpty(exFileNotFound.FusionLog))
                {
                    sb.AppendLine("Fusion Log:");
                    sb.AppendLine(exFileNotFound.FusionLog);
                }
            }
            sb.AppendLine();
        }
        string errorMessage = sb.ToString();
        log.Fatal(errorMessage);
    }
+2

All Articles