BadImageFormatException异常

时间:2013-05-31 17:41:07

标签: asp.net wcf iis-7

我正在尝试运行我在Visual Studio 2012中创建的WCF服务。

我在页面中遇到错误。

> Exception Details: System.BadImageFormatException: Could not load file
> or assembly 'dllname' or one of its dependencies. An attempt was made
> to load a program with an incorrect format.
> 
> -------------------------------------------------------------------------------- Assembly Load Trace: The following information can be helpful to
> determine why the assembly 'dllname' could not be loaded.
> 
> === Pre-bind state information === LOG: User = IIS APPPOOL\DefaultAppPool LOG: DisplayName = dllname  (Partial) WRN:
> Partial binding information was supplied for an assembly: WRN:
> Assembly Name: dllname | Domain ID: 2 WRN: A partial bind occurs when
> only part of the assembly display name is provided. WRN: This might
> result in the binder loading an incorrect assembly. WRN: It is
> recommended to provide a fully specified textual identity for the
> assembly, WRN: that consists of the simple name, version, culture, and
> public key token. WRN: See whitepaper
> http://go.microsoft.com/fwlink/?LinkId=109270 for more information and
> common solutions to this issue. LOG: Appbase =
> file:///D:/wwwroot/website/WebServices/ LOG: Initial PrivatePath =
> D:\wwwroot\website\WebServices\bin Calling assembly : (Unknown).
> === LOG: This bind starts in default load context. LOG: Using application configuration file:
> D:\wwwroot\website\WebServices\web.config LOG: Using host
> configuration file:
> C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet.config LOG: Using
> machine configuration file from
> C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
> LOG: Policy not being applied to reference at this time (private,
> custom, partial, or location-based assembly bind). LOG: Attempting
> download of new URL
> file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary
> ASP.NET Files/webservices/febcb7de/76686d13/dllname.DLL. LOG:
> Attempting download of new URL
> file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary
> ASP.NET Files/webservices/febcb7de/76686d13/dllname/dllname.DLL. LOG:
> Attempting download of new URL
> file:///D:/wwwroot/website/WebServices/bin/dllname.DLL. ERR: Failed to
> complete setup of assembly (hr = 0x8007000b). Probing terminated.
> 
> -------------------------------------------------------------------------------- Stack Trace: 
> 
> [BadImageFormatException: Could not load file or assembly 'dllname' or
> one of its dependencies. An attempt was made to load a program with an
> incorrect format.]   
> 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,
> Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr
> pPrivHostBinder, Boolean forIntrospection) +77   
> System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString,
> Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean
> forIntrospection) +16    System.Reflection.Assembly.Load(String
> assemblyString) +28   
> System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String
> assemblyName, Boolean starDirective) +38
> 
> [ConfigurationErrorsException: Could not load file or assembly
> 'dllname' or one of its dependencies. An attempt was made to load a
> program with an incorrect format.]   
> System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String
> assemblyName, Boolean 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) +258   
> System.Web.Compilation.BuildManager.ExecutePreAppStart() +135   
> System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager
> appManager, IApplicationHost appHost, IConfigMapPathFactory
> configMapPathFactory, HostingEnvironmentParameters hostingParameters,
> PolicyLevel policyLevel, Exception appDomainCreationException) +516
> 
> [HttpException (0x80004005): Could not load file or assembly 'dllname'
> or one of its dependencies. An attempt was made to load a program with
> an incorrect format.]   
> System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9873784 
> System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context)
> +101    System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest
> wr, HttpContext context) +254
>  
> 
> 
> --------------------------------------------------------------------------------
我搜索了一下,我已经尝试了几件事。 1)在应用程序池中启用32位应用程序 2)将项目属性中的目标设为“任何CPU” 3)删除临时文件,回收应用程序池,重置IIS等

如果您有任何其他建议,请提供帮助。

1 个答案:

答案 0 :(得分:3)

看起来您正在尝试将64位程序集加载到32位应用程序池中。我这样说是因为我在堆栈跟踪中看到C:\Windows\Microsoft.NET\Framework\v4.0.30319\。如果它是64位应用程序池,则使用Framework64。禁用“启用32位”并重试。