C#中的动态WSDL实现

Sku*_*udd 4 .net soap wsdl web-services

我对.Net中的Web服务比较陌生,所以如果这是一个新手问题,我很抱歉.

我已经找到了很多关于如何在.Net项目中实现Web服务的资源,但是所有这些资源似乎都涉及暴露方法的静态定义.虽然这可能适用于某些应用程序,但它不符合我需要的费用.

我想知道的是,有没有办法动态实现WSDL中公开的方法,比如PHP SoapClient的方式呢?

p.c*_*ell 7

WSDL实际上只是为了帮助定义方法名称和参数,并为您(开发人员)屏蔽所有HTTP头.

听起来你想要在运行时提供方法名称和参数.也许解决这个问题的方法是完全忘记WSDL.进行自己的HTTP调用.

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";
Run Code Online (Sandbox Code Playgroud)

有关完整详细信息,请参阅使用HttpWebRequest动态调用Web服务一文.

关于.NET的Web服务包装器类的一般情况是,他们试图帮助强制执行服务器与客户端的合同.显然,您正试图避免更改静态类型的客户端,如.NET包装器类所示.希望你能维持下来不会太费力.