【发布时间】:2019-10-25 21:16:05
【问题描述】:
我是 .Net 的新手。我创建了一个连接到数据库并执行一些事务的代码。对于数据访问管理器,我添加了参考 Oracle.DataAccess.86 (Oracle.DataAccess.dll) 并在本地使用“任何 CPU”运行。它工作正常。但是当我将它部署在运行 64 位 IIS 的服务器上时,它给了我以下错误:
无法加载文件或程序集“Oracle.DataAccess”或其依赖项之一。试图加载格式不正确的程序。说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.BadImageFormatException:无法加载文件或程序集“Oracle.DataAccess”或其依赖项之一。试图加载格式不正确的程序。
[BadImageFormatException:无法加载文件或程序集“Oracle.DataAccess”或其依赖项之一。试图加载格式不正确的程序。] System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0 System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef,证据 assemblySecurity,RuntimeAssembly reqAssembly,StackCrawlMark 和 stackMark,IntPtr pPrivHostBinder,布尔 throwOnFileNotFound,布尔 forIntrospection,布尔 suppressSecurityChecks)+225 System.Reflection.RuntimeAssembly.InternalLoad(字符串 assemblyString,证据 assemblySecurity,StackCrawlMark 和 stackMark,IntPtr pPrivHostBinder,Boolean forIntrospection)+110 System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean for Introspection) +22 System.Reflection.Assembly.Load(String assemblyString) +34 System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +48
如何找到解决此错误的方法?
【问题讨论】:
-
检查这个问题。这听起来像是一个可能的解决方案...stackoverflow.com/questions/1707101/…
-
@WernfriedDomscheit 他们所要做的就是将 AppPool 设置为作为 32 位应用程序运行,它会排除答案,但他们不会。如果项目中包含必备程序集,则他们不需要 ODP.Net 安装,但这完全是另一个问题。在 OP 回答提出的问题并对提出的建议做出相应回应之前,一切都是纯粹的猜测。
标签: c# .net oracle odp.net data-access