I’ve been experiencing an assembly binding problem when using Castle Windsor in a WCF service that I’m developing. It’s a bit of a complex scenario so I won’t delve into the details, suffice to say that when I try to inject an IServiceBehavior into my WCF service using Windsor’s Wcf Integration Facility get the following exception: “Could not load file or assembly ‘System.ServiceModel’ or one of its dependencies. The system cannot find the file specified.”
Seeing as I could’nt get to the bottom of the issue myself, I posted on the Castle Project Users Google Group and was instructed by Krzysztof Kozmic, one of the Windsor developers, to debug using fuslogvw.exe . Hoping this was more than some derogatory term in Krzysztof’s native language, I googled for it and discovered that it is Microsoft’s Assembly Binding Log Viewer utility. I quickly learned how to use it from a well written blog poston fuslogvw.exe and merrily went about using it to find out what went wrong.
Alas! Even though I followed the instructions, no data was collected by the Assembly Binding Log Viewer. It took me a while to figure out that the reason was that I was running my WCF service using Visual Studio 2008’s built-in ASP.NET Development Server (WebDev.WebServer.exe). When I switched over to IIS as my host and recreaed my problematic scenario, I immediately received the details of the erroneous binding in fuslogvw.exe’s main screen.
Turns out that Assembly Binding Log Viewer does’nt play nice with ASP.NET Development Server :). This seems rather odd to me seeing as fuslogvw.exe supposedly “listens in” on all CLR assembly bindings I find this rather odd. If anyone knows why this is and how it can be overcome please drop a line in the comments.