我有一个VB.NET(2008)控制台应用程序,它使用Web服务。一切正常 - 我使用WSDL.exe导入Web服务的定义并创建适当的类,我可以与这些类交互以填充数据,并且对Web服务的调用成功并传递数据
但是,在成功传输数据之后,我想将此事件记录到我的Oracle数据库中的一个表中 - 包括已传输的XML(以便稍后查看,以防有关具体问题通过的数据等)。如何获取通过自动序列化这些对象创建的XML(通过.NET内部管道)?
我可以自己序列化对象并获取数据的近似表示,例如:
Dim oStringBuilder As New StringBuilder
Dim oStringWriter As New StringWriter(oStringBuilder)
Dim oXmlTextWriter As New XmlTextWriter(oStringWriter)
'-- (oData, for the purposes of this example, is an instance of the main data class explosed in the code generated by WSDL.exe)
Dim oXmlSerializer as New System.Xml.Serialization.XmlSerializer(oData.GetType)
'-- Serialize the data to a StringBuilder
oXmlTextWriter.Formatting = Formatting.Indented
oXmlSerializer.Serialize(oXmlTextWriter, oData)
'-- Display serialized XML (in practice this would be an insert to a table, etc.)
MessageBox.Show(oStringBuilder.ToString)
...但是,这实际上与实际传递给Web服务的内容不同(最值得注意的是,某些元素名称不同,并且它不包含相同的头信息和根元素) 。有一些类有Serialization.XmlTypeAttribute定义等,我假设.NET框架正在使用它来处理真正的SOAP管道。如何获取传递给Web服务的实际 XML?