首先,我是WCF / WSDL领域的完整菜鸟,所以请耐心等待我
好的,我有一个WSDL,XSD用于复杂的消息类型,我在C#控制台应用程序中生成了一个测试客户端。我在reference.cs中添加了对WSDL获取代码的Web引用。
我调用了reference.cs中可用的方法,完美的作品。我在reference.cs中的方法上添加了soap trace扩展来记录soap请求/响应,工作正常。
在客户端我得到WSDL复杂类型类对象,我看到同步和异步调用都返回了一切。
现在这是我想要/尝试做的事情,我希望方法不返回反序列化的类对象,而是返回肥皂串,就像它们在流中和反序列化之前一样。
如何更改返回肥皂串的方法?这不是关于访问它们(我已经开始做)而是直接从方法返回。
请指出我正确的方向,否则我必须实施一个肥皂客,我试图避免。
我感谢任何帮助。如果我澄清事情,请告诉我。
更新
好的,先生,这就是我所做的:
使用svcutil从WSDL生成一个类,然后:
ServiceClient1 sc1 = new ServiceClient1();
TestResponseClass trc1 = sc1.method1("Testinput");
System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(typeof(TestResponseClass ),"http://xxx.xxx.xxx.local/Service1.wsdl");
StringWriter stringWriter = new StringWriter();
x.Serialize(stringWriter, trc1);
Console.Write(stringWriter.ToString());
这样我得到了xml响应。更接近我愿意拥有的东西,我会尝试将其转换为肥皂反应。我希望我现在正在走上正轨。如果没有,请更正。快速学习和学习......我想
答案 0 :(得分:1)
你可能会感到困惑。不要使用Web引用。这是传统的ASMX技术,已被WCF和“添加服务参考”取代。
不要将ASMX用于新开发。
我已经看到了你的更新,你确实很困惑。
您的代码有:
ServiceClient1 sc1 = new ServiceClient1();
TestResponseClass trc1 = sc1.method1("Testinput");
就是这样。你完成了。您已向服务发送了SOAP消息,并且已收到响应。根本不需要使用XML。