我编写了一个相当复杂的 C# 应用程序,它通过 ODP.Net 访问 oracle 数据库。我在安装了 ODAC(32 位)的 Windows XP 机器(32 位)上开发了该应用程序。该应用程序在我的开发 PC 上运行没有故障,但在服务器上引发异常(windows server 2003 x64 service pack 2)。
我在服务器上安装了 .Net framework 4.0 (dotNetFx40_Full_x86_x64.exe) 的运行时以及 ODAC——我首先尝试使用 Windows x64 的 Release 4 (11.2.0.3.0),然后使用 ODAC 11.2 Release 4 (11.2. 0.3.0) 与适用于 Visual Studio 的 Oracle 开发人员工具。
没有一个工作。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,但即使这样也失败了。我仍然收到相同的错误消息。