After adding a "web service reference" in visual studio and instantiating the generated proxy class, I noticed I was a parameter short. The web service method had three parameters - a custom class, an 'out' int and an 'out' string. But the proxy class only had the first and the last of those three parameters. I took a quick look at the WSDL and that was correct. I had also added a reference to a similar service the week before so I knew that you could have multiple 'out' parameters. After a little googling I found this article. Because my web method returned 'void' the proxy class generator was using the first 'out' param as the return value instead. I just returned a Boolean instead and that made my first out parameter show up as a parameter in the proxy class.