The problem
I ran into the situation where a WCF service had a reference to sever 3rd party components. One of the components itself actually had a reference to some ancient 16-bit code. The WCF service was hosted in IIS7 on a 64-bit machine and used Unity to resolve dependencies.
As Unity tried to resolve dependencies I kept getting an error that looked a bit like this:
Unexpected exception thrown by call to <service type here>: Resolution of the dependency failed, type = "<service contract interface here>", name = "(none)". Exception occurred while: Calling constructor <type that failed construction>. Exception is: FileNotFoundException - Could not load file or assembly <assembly name here>, Version=1.0.0.0, Culture=neutral, PublicKeyToken=<key here>' or one of its dependencies. The system cannot find the file specified.
The solution
The solution was to configure the application pool that the service was using to allow 32-bit assemblies.
1. View application pools and select the appropriate pool from the list.
2. Choose ‘Advanced settings…’ from the menu on the right.
3. Set ‘Enable 32-Bit Applications’ to True.
4. Click OK.