System.BadImageFormatException错误

时间:2015-04-14 08:47:55

标签: c# asp.net

我正在使用Windows Server 2008 R2 Datacenter 64位操作系统。我正在使用Visual Studio 2013,它有一个包含2个项目的解决方案,我遇到了这个错误。

  

异常详细信息:System.BadImageFormatException:无法加载文件   或组装EyeCantSeeEngine'或其中一个依赖项。一次尝试   是为了加载格式不正确的程序。

     

来源错误:

     

执行期间生成了未处理的异常   当前的网络请求。有关的来源和位置的信息   可以使用下面的异常堆栈跟踪来识别异常。

     

装配加载跟踪:以下信息可能对您有所帮助   确定装配的原因EyeCantSeeEngine'无法加载。

     

===预绑定状态信息===日志:DisplayName = EyeCantSeeEngine(部分)警告:提供了部分绑定信息   程序集:WRN:程序集名称:EyeCantSeeEngine |域ID:2 WRN:A   仅部分程序集显示名称为时发生部分绑定   提供。警告:这可能导致活页夹加载不正确   部件。警告:建议提供完全指定的文本   程序集的身份,WRN:由简单名称组成,   版本,文化和公钥令牌。警告:见白皮书   http://go.microsoft.com/fwlink/?LinkId=109270了解更多信息和   这个问题的常见解决方案。日志:Appbase =   文件:/// C:/用户/管理员/文档/ ISFC_Main / EyeCantSee / EyeCantSeeEngine /   日志:初始PrivatePath =   C:\用户\管理员\文件\ ISFC_Main \ EyeCantSee \ EyeCantSeeEngine \ BIN

     

调用程序集:(未知)。

     

日志:此绑定在默认加载上下文中启动。日志:使用应用程序   配置文件:   C:\用户\管理\文档\ ISFC_Main \ EyeCantSee \ EyeCantSeeEngine \的web.config   日志:使用主机配置文件:   C:\ Users \ uni \ Documents \ IISExpress \ config \ aspnet.config日志:使用   来自的机器配置文件   C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ CONFIG \ machine.config中。   日志:此时政策未适用于参考(私人,   自定义,部分或基于位置的程序集绑定)。日志:正在尝试   下载新的URL   file:/// C:/ Users / uni / AppData / Local / Temp / 1 / Temporary ASP.NET   文件/根/ b917a818 / 774df716 / EyeCantSeeEngine.DLL。日志:正在尝试   下载新的URL   file:/// C:/ Users / uni / AppData / Local / Temp / 1 / Temporary ASP.NET   文件/根/ b917a818 / 774df716 / EyeCantSeeEngine / EyeCantSeeEngine.DLL。   日志:尝试下载新网址   文件:/// C:/Users/Administrator/Documents/ISFC_Main/EyeCantSee/EyeCantSeeEngine/bin/EyeCantSeeEngine.DLL。   错误:无法完成程序集的设置(hr = 0x8007000b)。探测   终止。

     

堆栈追踪:

     

[BadImageFormatException:无法加载文件或程序集   ' EyeCantSeeEngine'或其中一个依赖项。试图做到   加载格式不正确的程序。]
  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.nLoad(AssemblyName fileName,String   codeBase,Evidence assemblySecurity,RuntimeAssembly locationHint,   StackCrawlMark&安培; stackMark,IntPtr pPrivHostBinder,Boolean   throwOnFileNotFound,Boolean forIntrospection,Boolean   suppressSecurityChecks)+34
  System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(的AssemblyName   assemblyRef,Evidence assemblySecurity,RuntimeAssembly reqAssembly,   StackCrawlMark&安培; stackMark,IntPtr pPrivHostBinder,Boolean   throwOnFileNotFound,Boolean forIntrospection,Boolean   suppressSecurityChecks)+152
  System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString,   证据集合安全,StackCrawlMark& stackMark,IntPtr   pPrivHostBinder,Boolean forIntrospection)+77
  System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString,   证据集合安全,StackCrawlMark& stackMark,布尔   forIntrospection)+16 System.Reflection.Assembly.Load(String   assemblyString)+28
  System.Web.Configuration.CompilationSection.LoadAssemblyHelper(字符串   assemblyName,布尔starDirective)+38

     

[ConfigurationErrorsException:无法加载文件或程序集   ' EyeCantSeeEngine'或其中一个依赖项。试图做到   加载格式不正确的程序。]
  System.Web.Configuration.CompilationSection.LoadAssemblyHelper(字符串   assemblyName,布尔starDirective)+752
  System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory()   +218 System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo   ai)+130
  System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection   compConfig)+170
  System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies()   +91 System.Web.Compilation.BuildManager.CallPreStartInitMethods(String   preStartInitListPath,Boolean& isRefAssemblyLoaded)+285
  System.Web.Compilation.BuildManager.ExecutePreAppStart()+153
  System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager   appManager,IApplicationHost appHost,IConfigMapPathFactory   configMapPathFactory,HostingEnvironmentParameters hostingParameters,   PolicyLevel policyLevel,Exception appDomainCreationException)+521

     

[HttpException(0x80004005):无法加载文件或程序集   ' EyeCantSeeEngine'或其中一个依赖项。试图做到   加载格式不正确的程序。]
  System.Web.HttpRuntime.FirstRequestInit(HttpContext context)+9950728   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context)   +101 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest)   wr,HttpContext context)+254

我尝试将错误项目的目标平台从x64更改为x86,接下来遇到的错误就是这个。

  

异常详细信息:System.OutOfMemoryException:类型异常   '的System.OutOfMemoryException'被扔了。

     

来源错误:

     

执行期间生成了未处理的异常   当前的网络请求。有关的来源和位置的信息   可以使用下面的异常堆栈跟踪来识别异常。

     

堆栈追踪:

     

[OutOfMemoryException:类型的异常' System.OutOfMemoryException'   被抛出。] 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.nLoad(AssemblyName fileName,String   codeBase,Evidence assemblySecurity,RuntimeAssembly locationHint,   StackCrawlMark&安培; stackMark,IntPtr pPrivHostBinder,Boolean   throwOnFileNotFound,Boolean forIntrospection,Boolean   suppressSecurityChecks)+34
  System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(的AssemblyName   assemblyRef,Evidence assemblySecurity,RuntimeAssembly reqAssembly,   StackCrawlMark&安培; stackMark,IntPtr pPrivHostBinder,Boolean   throwOnFileNotFound,Boolean forIntrospection,Boolean   suppressSecurityChecks)+152
  System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString,   证据集合安全,StackCrawlMark& stackMark,IntPtr   pPrivHostBinder,Boolean forIntrospection)+77
  System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString,   证据集合安全,StackCrawlMark& stackMark,布尔   forIntrospection)+16 System.Reflection.Assembly.Load(String   assemblyString)+28
  System.Web.Configuration.CompilationSection.LoadAssemblyHelper(字符串   assemblyName,布尔starDirective)+38

     

[ConfigurationErrorsException:类型异常   '的System.OutOfMemoryException'被扔了。]
  System.Web.Configuration.CompilationSection.LoadAssemblyHelper(字符串   assemblyName,布尔starDirective)+752
  System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory()   +218 System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo   ai)+130
  System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection   compConfig)+170
  System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies()   +91 System.Web.Compilation.BuildManager.CallPreStartInitMethods(String   preStartInitListPath,Boolean& isRefAssemblyLoaded)+285
  System.Web.Compilation.BuildManager.ExecutePreAppStart()+153
  System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager   appManager,IApplicationHost appHost,IConfigMapPathFactory   configMapPathFactory,HostingEnvironmentParameters hostingParameters,   PolicyLevel policyLevel,Exception appDomainCreationException)+521

     

[HttpException(0x80004005):类型异常   '的System.OutOfMemoryException'被扔了。]
  System.Web.HttpRuntime.FirstRequestInit(HttpContext context)+9950728   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context)   +101 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest)   wr,HttpContext context)+254

我还尝试将IIS应用程序池中的启用32位应用程序更改为True,但System.BadImageFormatException错误仍然存​​在。非常感谢任何解决此错误的建议。

1 个答案:

答案 0 :(得分:0)

BadImageFormatException通常意味着架构混淆。例如,尝试使用x64 install util安装32位程序集。

同样在预绑定状态信息中,您可以阅读以下行:

  

警告:只有部分程序集显示名称时才会发生部分绑定   提供。   警告:这可能导致装订器装入错误的装配。

这可能表示您没有使用完全限定名称来加载程序集而只是加载类型。尝试指定要加载的程序集的完全限定名称。