It seems that the auto generated proxy classes for SOAP (Webreferences) seem to require the root element of the response SOAP body to be fully qualified by namespace by default. One trick to overcome this that worked for me was to use wsdl.exe to create editable classes rather than using webreference. Then I was able to remove the ResponseNameSpace
attribute from the System.Web.Services.Protocols.SoapDocumentMethodAttribute attribute annotation. This seem to allow the temporary infrastructure xml deserializer class to work correctly by making the call to XmlReader.IsStartElement return true for Axis generated SOAP responses that do not specify a namespace at all.
wsdl.exe /language:CS /out:CustomWebServiceProxy.cs AxisServiceWsdl.wsdl
( /namespace:MyAppNameSpace )
You can also remove the System.Diagnostics.DebuggerStepThroughAttribute attribute annotations so that you can step into (F-11 key) the runtime generated proxy code to see and debug the serializer and deserializer in action. This comes in very useful when you are receiving a valid soap response over the network but your return object is null upon returning back from the webservice call. I had to do this when all I was getting was null and had no error messages to grasp at.