Wcf WSDL web引用客户端和alter方法返回soap字符串
首先,我在WCF/WSDL领域是完全的noob,所以请耐心等待我 好的,我有一个用于复杂消息类型的WSDL和XSD,我在C#console应用程序中生成了一个测试客户机。我向reference.cs中生成的WSDL GET代码添加了一个web引用 我在reference.cs中调用了可用的方法,fine works完美无瑕。我在reference.cs中的方法上添加了soap跟踪扩展来记录soap请求/响应,效果很好 在客户机中,我得到了WSDL复杂类型的类对象,在该对象中,无论是同步调用还是异步调用,都可以很好地返回所有内容 这就是我想要/试图做的,我希望方法返回的不是反序列化的类对象,而是soap字符串,就像它们在流中和反序列化之前接收一样 如何更改方法以返回soap字符串?这不是访问它们(我成功地做到了),而是直接从方法返回 请给我指出正确的方向,否则我必须去实现一个soapclient,这是我试图避免的 谢谢你的帮助。如果我需要澄清,请告诉我 更新: 好的,先生,我就是这么做的: 使用svcutil从WSDL生成一个类,然后:Wcf WSDL web引用客户端和alter方法返回soap字符串,wcf,soap,wsdl,client,Wcf,Soap,Wsdl,Client,首先,我在WCF/WSDL领域是完全的noob,所以请耐心等待我 好的,我有一个用于复杂消息类型的WSDL和XSD,我在C#console应用程序中生成了一个测试客户机。我向reference.cs中生成的WSDL GET代码添加了一个web引用 我在reference.cs中调用了可用的方法,fine works完美无瑕。我在reference.cs中的方法上添加了soap跟踪扩展来记录soap请求/响应,效果很好 在客户机中,我得到了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响应。更接近我想要的,我将尝试将其转换为soap响应。我希望我现在正走在正确的轨道上。如果没有,请更正。学习和快速学习……我想你可能有点困惑了。不要使用网络引用。这是传统的ASMX技术,已被WCF和“添加服务引用”所取代 请勿将ASMX用于新开发
我看到了你的更新,你确实感到困惑 您的代码有:
ServiceClient1 sc1 = new ServiceClient1();
TestResponseClass trc1 = sc1.method1("Testinput");
就这样。你完了。您已经向服务发送了SOAP消息,并且已经收到响应。根本不需要使用XML。谢谢,非常感谢您的回答,好的,我也尝试过使用服务参考。同样,我想修改我的方法代码,以返回字符串或流中的soap(我认为它只对SoapExtension公开)。根据WSDL中使用的模式,再次将响应类对象反序列化回soap,这是好方法还是好方法?对我来说这听起来很奇怪,因为WCF已经从流中序列化了它,我希望WCF最好不要序列化它。很抱歉,但您应该给出更多细节,因为这没有多大意义。您不能将SoapExtension与WCF一起使用。“返回SOAP字符串”是什么意思?一般来说,您不需要或不想返回SOAP字符串。再次感谢John,我想要的是我的soapdocument属性方法,要返回我的SOAP xml字符串或流,它现在返回的是一个复杂类型的类对象(从WSDL生成)(这是它应该是什么样子)。这就是您的困惑所在。您根本不应该使用
[SoapDocumentMethod]
。您根本不应该编写ASMX服务。请参阅“”,其中显示了如何使用正确的技术创建服务,然后显示了如何使用它。感谢John指出我的观点,如果我得到了所需的,我将按照您的示例在明天报告。再次感谢。你为什么想要“SOAP回复”?谢谢你的回复。你让我走上了正轨。解释起来有点复杂,但简而言之,将有另一个客户机连接到我的客户机,他们希望使用soap信封,但我再次考虑,我最好像上面那样使用XML。请您检查一下上述序列化回XML的方法是否正确有效(尽管它确实为我提供了正确的XML).谢谢你John.这个客户和你的客户有什么联系?如果通过网络,则没有问题。您仍然不需要使用XML。感谢您的正面回复。我发现我不需要其他客户机使用soap消息,只有XML可以这样做,序列化回XML就足够了。最后一个问题,由于双重序列化/反序列化,我怀疑这是正确的方法吗?其他客户端将有一个dll来调用thorugh。