asp.net-mvc-4 - 使用 servicestack 使用 wsdl SOAPS 服务

标签 asp.net-mvc-4 soap wsdl servicestack

我一直在尝试使用 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/

相关文章:

razor - 将 MVC3 应用程序迁移到 MVC4 : Compiler Error Message: CS1513: } expected 的问题

javascript - Jquery网格仅在第一次单击时加载,并且在后续单击时不重新加载

java - 如何让两个不同的端点具有不同的命名空间和相同的 JAXB 类?

java - 无法为 WSDD 操作找到匹配的 Java 操作

java - 在 WSDL 文件中指定抛出 AxisFault

api - Web API Controller 方法 -- 请求为空

php - 使用 PHP 生成 XML 签名摘要

java - WSDL 更改后 Apache Axis 失败

java - 如何创建 WSDL 文件来返回 ArrayList?

c# 派生自基类 apicontroller - 在基类中,Request 对象为 null