如何在web api上发布SOAP消息(asp.net核心 - > web api)

问题描述:

我想将基于SOAP XML的消息发布到我在ASP.NET核心项目模板中创建的Web API。如何在web api上发布SOAP消息(asp.net核心 - > web api)

现在我正在获取不受支持的媒体类型错误,当我发布内容类型为application/soap + xml。

我知道我们应该将SOAP消息发送给基于WCF的服务,但我们的要求只是这样。我应该可以在Web API中使用SOPA消息。

感谢, 苏达玛

+0

如何从不了解SOAP的服务中使用SOAP?没有理智的方法将WebAPI转换为SOAP。你必须使用WCF服务,没有其他办法,这意味着,使用完整的.NET框架。 WebAPI是一个REST API,而不是SOAP – Tseng

+0

我使用下面的代码发布SOAP消息并检索基本上是xml的主体,现在我试图反序列化它,但得到错误根元素丢失,否则我似乎找到了解决办法[HttpPost ] public查找帖子([FromBody] XmlDocument xmlDocument){var soapBody = xmlDocument.GetElementsByTagName(“soap12:Body”)[0];字符串innerObject = soapBody。InnerXml; XmlSerializer deserializer = new XmlSerializer(typeof(Find));使用(TextReader reader = new StreamReader(innerObject)){return(Find)deserializer.Deserialize(reader); }} –

+0

你当然可以从请求体中读取有效载荷。但为此,您需要启用缓冲/倒带。请参阅Tratcher的回答(更具体的意见)http://*.com/a/37842083/455493然后,您可以使用XmlDocument的'Load'方法自己分析流...但是这会消耗更多的内存,取决于你的肥皂有效载荷的大小 – Tseng

这里有两部分答案:

暴露SOAP servcices与ASP.NET核心:

  • 微软没有寻找到移植SOAP有能力的服务ASP.NET核心,不在不久的将来(看this other SO answer其中说明相同)。

  • 话虽这么说,没有什么阻止你使用普通的.NET Framework,支持SOAP或者使用旧ASMXWCF这是的.NET Framework 4.5.x的一部分,至少(支持ending in 2023)。

  • 最后,SOAP似乎只是一个技术要求你,所以你只需构建transfering电话到主ASP.NET核心服务薄SOAP层。

的唯一限制是支持在Linux上部署此,对其中的完整的.NET框架本身不运行;如果没有,你很好走。

使用SOAP服务赢得ASP.NET核心:

ASP.NET核心支持通过使用WCF Connected services使用SOAP服务在ASP.NET核心

+0

如果是这种情况,那么我们将如何在分布式系统中集成不同的服务?我有一个只能发送soap消息的客户端,并且有一个只能接收soap格式消息的下游系统,而且我们正在使用.NET核心构建一个中间件,然后该集成如何工作? –

+0

也想检查.net核心是否不可能通过使用早期版本.Net(例如web API 2)构建的web api终点来使用SOAP消息是否可能? –

+0

请将此代码正确地添加到您的问题中,以便它可读 – bsoulier

我通过实施自定义输入& OutPut格式化程序来解决此问题。这些格式化程序是简单的类,它们只是实现由.Net核心提供的IInputFormatter & IOutPutFormatter。使用上下文对象来读取传入的请求并以您想要的格式(xml或Json)将其序列化。