.NET框架如何從消息合約創建SOAP消息?哪個串行器類用於序列化消息合約?將消息合約轉換爲SOAP消息
回答
深度覆蓋下,SOAP消息主要使用SerializeReply
類的方法實現System.ServiceModel.Dispatcher.IDispatchMessageFormatter
接口。有兩個內部格式化程序使用XmlObjectSerializer
和XmlSerializer
實現來序列化消息標題和正文。
幸運的是,還有一個公共類提供了所需的功能。 TypedMessageConverter
內部創建的調度消息格式化程序與調度程序的格式化程序設置類似。它使用私有的GetOperationFormatter
方法中的Create
靜態方法重載,以創建內部System.ServiceModel.Description.XmlMessageConverter
類的實例。
在創建TypedMessageConverter
實現實例後,可以將消息合約實例傳遞到ToMessage
方法中。最後,在Message
實例上調用ToString
方法返回預期的SOAP消息字符串。
TypedMessageConverter converter = TypedMessageConverter.Create(
typeof(CustomMessage),
"http://schemas.cyclone.com/2011/03/services/Service/GetData",
"http://schemas.cyclone.com/2011/03/data",
new DataContractFormatAttribute() { Style = OperationFormatStyle.Rpc });
CustomMessage body = new CustomMessage()
{
// Setting of properties omitted
};
Message message = converter.ToMessage(body, MessageVersion.Soap12);
string soapMessage = message.ToString();
這將取決於您的配置。默認basicHttpBinding
和wsHttpBinding
使用DataContractSerializer類。就SOAP包絡而言,我不知道使用了哪些類,我不確定它們是否會公開(我可能在這方面是錯誤的)。
據我所知,它並不是直接被序列化器使用。它創建Message
類型的內部結構,然後根據MessageVersion
和選定的Encoder
編寫。
內部結構由TypedMessageConverter
準備。我認爲這是一個負責消息合同處理的類。不幸的是,它是內部實現的抽象類。
因此,郵件合同與DataContractSerializer
和XmlSerializer
一起使用。
要回答這個問題:「我想看看SOAP消息將如何看待時,消息協定序列化/格式化,如」
您可以像使用Fiddler一個工具,它可以讓你看到怎麼回事了電線。在這裏,您可以跟蹤正在發送的實際消息xml。
- 1. 將SOAP消息轉換爲Java對象
- 2. 將SOAP消息從VBA轉換到VB.Net
- 3. 的Xquery程序轉換爲SOAP消息
- 4. 如何創建SOAP消息?如何將肥皂消息轉換爲對象?
- 5. RabbitMQ將消息分組爲一個消息,即合併消息
- 6. 消息轉換
- 7. 將Gmail API消息轉換爲OpenPop Mime消息
- 8. 使用rpc將soap消息轉換爲基於wsdl的對象
- 9. 將Windows消息ID轉換爲文本
- 10. 將消息值轉換爲宏?
- 11. 將HRESULT轉換爲可讀消息
- 12. 將Subversion提交消息轉換爲Unicode
- 13. 將xml消息轉換爲idh文件
- 14. 將Toast消息轉換爲文本
- 15. 如何將ByteString轉換爲protobuf消息
- 16. 如何將JAXBElement作爲SOAP消息的子節點附加到SOAP消息
- 17. 發送SOAP消息
- 18. 解析SOAP消息
- 19. 日誌SOAP消息
- 20. 在WCF SOAP消息
- 21. SOAP消息到期
- 22. SOAP消息信封
- 23. SOAP消息檢索
- 24. Mojibakes在SOAP消息
- 25. SOAP消息格式到Socket消息格式轉換,反之亦然使用Java
- 26. 在將SOAP消息發送到.NET中的WebService之前獲取SOAP消息
- 27. 將SOAP消息解組到Java /或者簡單地解析SOAP消息?
- 28. T-SQL將多個行轉換爲短消息文本字符串/消息
- 29. 使用WCF交換SOAP消息
- 30. Windows消息lparam轉換
你爲什麼想知道?你想完成什麼? – 2011-03-03 01:36:22
@John Saunders:我想知道當消息協定被序列化/格式化時,SOAP消息的外觀如何。經過一番挖掘,我發現這個班級實際上可以幫助我實現這一目標,而不用通過電報發送信息。 'TypedMessageConverter'類有幾個'Create'靜態方法重載,它們返回一個從'TypedMessageConverter'繼承的類的實例。我可以將消息合約實例傳遞給它的一個ToMessage方法重載,並在返回的Message上調用ToString方法來實現我真正想要的。我會在今天的某個時間發佈這個例子 – 2011-03-03 01:45:21