21

I am working on a web application which interacts with TFS. When I upload my application to windows azure cloud I am getting this error message .

appreciate your inputs to resolve this issue.

pasted below is the error message I am receiving

Server Error in '/' Application.
--------------------------------------------------------------------------------


Could not load file or assembly 'Microsoft.TeamFoundation.WorkItemTracking.Client.Cache' or one of its dependencies. An attempt was made to load a program with an incorrect format. 
  Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

 Exception Details: System.BadImageFormatException: Could not load file or assembly 'Microsoft.TeamFoundation.WorkItemTracking.Client.Cache' or one of its dependencies. An attempt was made to load a program with an incorrect format.

Source Error: 


 An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.  

Assembly Load Trace: The following information can be helpful to determine why the assembly 'Microsoft.TeamFoundation.WorkItemTracking.Client.Cache' could not be loaded.



WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].



Stack Trace: 



[BadImageFormatException: Could not load file or assembly 'Microsoft.TeamFoundation.WorkItemTracking.Client.Cache' 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, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0
   System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection, Boolean suppressSecurityChecks) +567
   System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +192
   System.Reflection.Assembly.Load(String assemblyString) +35
   System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +123

[ConfigurationErrorsException: Could not load file or assembly 'Microsoft.TeamFoundation.WorkItemTracking.Client.Cache' 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) +11568240
   System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +485
   System.Web.Configuration.AssemblyInfo.get_AssemblyInternal() +79
   System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +337
   System.Web.Compilation.BuildManager.CallPreStartInitMethods() +280
   System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +1167

[HttpException (0x80004005): Could not load file or assembly 'Microsoft.TeamFoundation.WorkItemTracking.Client.Cache' or one of its dependencies. An attempt was made to load a program with an incorrect format.]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +11700976
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +141
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +4869205




--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.272 
Millar
  • 1,095
  • 6
  • 16
  • 34

4 Answers4

23

This is because ,your project is trying to use a 32-bit dll in a 64-bit environment(azure)

To solve this type of issues ,create a start up script with the below given commands

Copy below startup script to a text file and save as "setup.cmd" . Then include this file into your web role project,set "copy local"=true then open your ServiceDefinition.csdef below given startup command inside webrole tag

<webrole > --your webrole
    <Startup>
              <Task commandLine="setup.cmd" executionContext="elevated" />
          </Startup>
</webrole >

start up script pasted below:

%windir%\system32\inetsrv\appcmd set config -section:system.applicationHost/applicationPools /applicationPoolDefaults.enable32BitAppOnWin64:"True" /commit:apphost
Lee
  • 665
  • 3
  • 7
  • 16
  • 1
    Confirming here as well, running the script resolved the issue. Any way to execute .cmd on startup for ASP.NET app ? – AlexVPerl Jan 12 '14 at 20:06
  • 9
    In the application pool, click "Advanced Settings" then set "Enable 32-Bit Applications" to true. Restart the Application Pool. – Jeppen May 12 '14 at 08:54
22

I resolved this issue by removig the respective DLL from the bin folder of my asp.net web project.

Thanks and regards,

Laeeq Qazi
  • 221
  • 2
  • 2
  • 1
    Please be more detail with your answer. For Example a Sample code. – Prahalad Gaggar Dec 26 '12 at 14:08
  • 8
    Seems this answer is as clear as can be - "remove the dll's from the bin folder" - worked for me, no sample code etc needed – Chris Moutray Jan 08 '13 at 16:50
  • 3
    If the files in the BIN folder conflict with what is installed on the server it can cause issues. If the TFS dlls are already on the server then there is no need to bin deploy the dlls. This was true in my case and deleting them from bin fixed the issue. – Marc Tidd Aug 05 '13 at 17:47
  • Yeah, this worked for me too. Too many references to stuff I didn't need! – Ben Power Sep 29 '15 at 00:24
  • Worked for me too. renamed bin\Microsoft.TeamFoundation.WorkItemTracking.Client.DataStoreLoader.dll to *.bak as we already had tfs installed to the server. – Stephen Sep 19 '16 at 21:36
14

I resolved this by setting the Enable 32-Bit applications option to True in the Advanced Settings of the application pool which the site used.

Ram
  • 3,092
  • 10
  • 40
  • 56
Moha
  • 181
  • 1
  • 5
6

BadImageFormat Exception is almost always a problem between a 32bit dll trying to load up a 64bit dll or a DLL or executable is loaded as a 64-bit assembly, but it contains 32-bit features or resources.

Try compiling your application down to x86 or vice versa and let me know how that works

Rob Allen
  • 2,871
  • 2
  • 30
  • 48
  • in fact I already selected platform "any CPU" ,platform target "any CPU" option for project properties. Is that what you meant ? – Millar Sep 28 '12 at 19:47
  • I also tried setting platform target to x86 ,but still I am getting the same error ,once I deploy to azure – Millar Sep 28 '12 at 20:44
  • Changing the compile to x86 resolved my issue when deploying a ClickOnce application that uses certain Visual Studio libraries on a machine that doesn't have Visual Studio installed – Taegost Oct 21 '14 at 14:52