2016-09-15 46 views
1

我想將基於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://stackoverflow.com/a/37842083/455493然後,您可以使用XmlDocument的'Load'方法自己分析流...但是這會消耗更多的內存,取決於你的肥皂有效載荷的大小 – Tseng

回答

1

這裏有兩部分答案:

暴露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

0

我通過實施自定義輸入& OutPut格式化程序來解決此問題。這些格式化程序是簡單的類,它們只是實現由.Net核心提供的IInputFormatter & IOutPutFormatter。使用上下文對象來讀取傳入的請求並以您想要的格式(xml或Json)將其序列化。