Debugging a BindingFailure Exception in Visual Studio
Even though APIs are RESTful these days sometimes you might need to interact with a SOAP-based web service.
I had to consume an SOAP XML web service the other day and encountered a strange problem while debugging my test application. The application was working fine but when I tried to debug it was closing silently. So as a first step I opened Debug –> Exceptions and checked all to let the application break upon any type of exception it gets.
After running the application with this setting at least I was able to see what the fuss was all about:
There are various approaches to resolve this issue and finally I found the correct one on a Stackoverflow answer: Go to Project Properties and in the Build tab turn on Generate Serialization Assembly setting.
When this setting it turned on, it generates an assembly named {Your Application Name}.XmlSerializers.dll.
Out of curiosity I peeked into the assembly with ILSpy and it looks like this:
Basically it just generates an abstract class deriving from XmlSerializer (named XmlSerializer1) and generates a bunch of sealed child classes deriving from that class.
I’ve never been a fan of auto-generated code anyway and looks like I’m not going to need it in my code but it’s used in the background by the framework. I added links to a few Stackoverflow answers related to that assembly though. I gather the advantage of turning it on is reduced startup time and being able to debug in this case. The disadvantage is increased deployment size which I think is negligible in this day and age so I’ll just keep it on and debug happily ever after!