WSDL does exist to help determine the names and parameters of a method and mask all HTTP headers for you, the developer.
It looks like you want to specify the method name and parameters at runtime. Perhaps the way around this is to completely forget about WSDL in general. Make your own HTTP calls.
HttpWebRequest req = (HttpWebRequest)WebRequest.Create( "http://foo.com/Some.asmx"); //build string from .config instead. //here Register is the name of the method. take yours from config as well if needed req.Headers.Add("SOAPAction", "\"http://tempuri.org/Register\""); req.ContentType = "text/xml;charset=\"utf-8\""; req.Accept = "text/xml"; req.Method = "POST";
For more information, see Calling a Web Service Dynamically Using HttpWebRequest .
As for the .NET web services wrapper classes in general, they are trying to help secure server contracts with the client. Obviously, you are trying to avoid changing statically typed clients, as shown in the .NET wrapper classes. I hope this will not be too burdensome for you.
source share