我想發送一個xml文件到我的wcf服務,我該如何發送它? 數據契約或消息契約有什麼辦法嗎? 請幫忙。如何通過WCF DataContracts/MessageContracts發送XML文件?
1
A
回答
3
你可以做這樣的事情:
var doc = new XmlDocument();
doc.LoadXml(xmlContent);
var message = Message.CreateMessage(MessageVersion.Soap11, "urn:someRequest", new XmlNodeReader(doc));
var factory = new ChannelFactory<IRequestChannel>("serviceHttpSoap11Endpoint");
var channel = factory.CreateChannel();
var response = channel.Request(message);
channel.Close();
所以,首先你加載XML文件中的XmlDocument對象,那麼你適應上述樣品送它。
我寫了一個關於前一陣子後:http://www.pvle.be/2009/02/send-xmldocument-using-windows-communication-foundation/
2
DataContract定義了您的C#表示XML的線路。你不希望看到原始的XML - 相信我..... :-)
所以基本上,你需要一個C#類,它是你的DataContract來描述你的XML的樣子。在客戶端和服務器上,您將使用C#類 - 而不是原始XML。如果DataContract與XML格式保持一致,則可以將原始XML反序列化爲DataContract類的類實例。
或者,您可以隨時在DataContract中添加一個字符串字段,並在其中打包原始XML並將其發送。
你擁有的最後的選擇是使用基本,非類型化Message
型爲WCF合同 - 在這種情況下,你需要處理原始XML客戶端和服務器端上 - 不漂亮可言,但如果你真的很想 - 這取決於你。
查看MSDN documentation on raw messages並查看Kurt Claeys'blog post就可以了。
馬克
2
雖然這是最好遵循marc_s的意見,並與高級別數據的合同堅持,有時需要發送任意的XML。爲此,您可以將一個XmlElement參數添加到OperationContract中。
爲了做到這一點,您必須使用XmlSerializer而不是Data Contract Serializer。您需要在服務合約上使用[XmlSerializerFormat]屬性。
相關問題
- 1. 通過WCF發送XML?
- 2. 如何通過JMS發送XML文件
- 3. 通過WCF發送XML有問題嗎?
- 4. 如何通過WCF服務發送IList?
- 5. 通過WCF發送數據
- 6. 如何通過套接字發送大型xml文件
- 7. 如何編輯收到的XML文件並通過PHP發送?
- 8. 如何通過REST API發送文件?
- 9. 如何通過jQuery發送文件?
- 10. 通過IpV6發送文件
- 11. 通過qextserialport發送文件
- 12. 通過sftp發送文件
- 13. 通過MSMQ發送文件
- 14. 通過Http發送文件
- 15. 通過SOCKET發送文件
- 16. 通過FTP發送文件
- 17. 通過流發送文件
- 18. 通過rabbitmq發送文件
- 19. 通過PSSession發送文件
- 20. 通過SUDS發送xml
- 21. 通過HTTP發送XML post
- 22. 通過curl發送xml
- 23. 通過TCP發送長XML
- 24. 我如何發送文件與WCF P2P
- 25. 如何將xml參數發送給WCF?
- 26. 如何通過Skype4Java通過Skype發送郵件和發件人
- 27. 發送XML文件的ActiveMQ
- 28. 通過WCF休息服務發送大文件(> 10 MB)
- 29. 通過郵寄發送XML使用WCF,但得到錯誤415
- 30. WCF發送大文件
@Praveen:你怎麼在這個問題上做什麼?如果你仍然有問題,你能說一下你想發送什麼樣的XML文件嗎? – 2009-07-06 23:36:12