1

我有一个使用 Web 服务的 VB.NET (2008) 控制台应用程序。一切正常——我已经使用 WSDL.exe 来导入 Web 服务的定义并创建适当的类,我可以与这些类交互以用数据填充它们,并且对 Web 服务的调用成功并且数据被传递.

但是,在成功传输数据后,我想将此事件记录到我的 Oracle 数据库中的一个表中——包括传输的 XML(以便稍后查看,以防对特定数据有疑问通过等)。如何获取通过这些对象的自动序列化(通过 .NET 内部管道)创建的 XML?

我可以自己序列化对象并获得数据的近似表示,例如:

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?

4

1 回答 1

0

如果您别无选择,只能使用传统的 ASMX 技术(WSDL.EXE,“添加 Web 引用”),那么您应该使用SoapExtension来记录您的服务请求和响应。

于 2013-04-19T04:09:08.890 回答