Jap Evans
Jap Evans

Reputation: 1127

BadImageFormatException exception

I am trying to run a WCF service which i created in Visual studio 2012.

I am getting below error in the page.

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

I googled about it and i already tried couple of things. 1) Enable 32 bit application in application pool 2) Made target in project properties as "Any CPU" 3) deleted temporary files, recycled app pool, reset IIS etc

Please help if you have any more suggestions.

Upvotes: 3

Views: 4384

Answers (1)

x0n
x0n

Reputation: 52480

It looks like you're trying to load a 64 bit assembly into a 32 bit application pool. I say this because I see C:\Windows\Microsoft.NET\Framework\v4.0.30319\ in the stack trace. If it was a 64 bit application pool, it would use Framework64. Disable "enable 32 bit" and try again.

Upvotes: 5

Related Questions