我一直在尝试使用 asp.net C# mvc5 应用程序使用 wsdl Soap 服务。原始服务是用 php 编写的,理想情况下这应该无关紧要,但我无法完成这项工作。我刚刚了解到 servicestack 是一种与 mvc 架构配合良好的替代方案。我正在寻找有关如何使用 servicestack 来使用 wsdl Soap 服务的指示,任何对此的帮助将不胜感激。我很高兴购买书籍,这些书籍将指导我如何将这两种方法与我的 mvc 应用程序一起使用
最佳答案
ServiceStack 允许通过 SOAP 端点公开您的 .NET 服务,自动为 SOAP Compatible Services 生成 WSDL 和 XSD。它可以与使用 VS .NET 的“添加服务引用”或 ServiceStack 的 .NET Soap11ServiceClient and Soap12ServiceClient 创建的生成的客户端代理一起使用。 .
但是 ServiceStack 不提供通用 SOAP 客户端来使用任何第 3 方 SOAP 服务。 SOAP 是 unnecessarily complex and brittle format您最好的选择是询问 PHP SOAP 服务的开发人员是否可以推荐任何 .NET SOAP 客户端,因为任何独立的 SOAP 客户端实现都不可能毫无问题地进行互操作,除非它们经过测试并验证为兼容。
如果不这样做,最可靠的选择是将 SOAP XML 视为字符串,在其中构造原始 SOAP 请求并将其 POST 到远程端点,例如 SOAP 1.1 请求:
var soapRequest = @"<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>"
+ requestXml
+ "</soap:Body></soap:Envelope>";
使用 HTTP Utils 发布 XML 的示例:
var soapResponseXml = soapEndpointUrl.PostXmlToUrl(soapRequest,
httpReq => httpReq.Headers["SOAPAction"] = requestName);
然后使用 WCF 的 Message.CreateMessage() 解析 SOAP 响应,如果 WCF 通用消息不支持 SOAP 响应,您可以尝试使用类似 XLINQ's XDocument 将其动态解析为 XML .
关于asp.net-mvc-4 - 使用 servicestack 使用 wsdl SOAPS 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31712930/