9

几天来,我们的应用程序出现问题。我们使用 SoapHttpClientProtocol 来调用 java mbean。这基本上是调用 java web 服务来调用方法。

我们的问题是有时我们会遇到以下异常:

XML 文档中存在错误 (1, 172089)。在 System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader,字符串 encodingStyle,XmlDeserializationEvents 事件)
在 System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader,字符串 encodingStyle)在 System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse( SoapClientMessage 消息、WebResponse 响应、Stream responseStream、Boolean asyncCall) 在 System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) 在 DynamicMBeanResourceBinding.Invoke(OperationRequestType ManagedResourceOperation) 在 JMXConnectorService.cs:line 781 在 JMXWSClient .InvokeMethodOnObject(String objectName, String methodName, ParameterType[] paramValue) in connectivity\Client.cs:line 132

原因:文件意外结束。以下元素未关闭: 图标

我们在通信层的最后一个代码是:

 /// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("soapHeaders", Direction = SoapHeaderDirection.In)]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://jsr262.dev.java.net/DynamicMBeanResource/Invoke", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Bare)]
[return: System.Xml.Serialization.XmlElementAttribute("ManagedResourceOperationResult", Namespace = "http://jsr262.dev.java.net/jmxconnector")]
public GenericValueType Invoke([System.Xml.Serialization.XmlElementAttribute(Namespace = "http://jsr262.dev.java.net/jmxconnector")] OperationRequestType ManagedResourceOperation)
{
    object[] results = this.Invoke("Invoke", new object[] {ManagedResourceOperation});
    return ((GenericValueType)(results[0]));
}

在被框架反序列化之前,有什么方法可以记录响应 xml?非常欢迎任何帮助或想法。

4

1 回答 1

3

以干净的方式执行此操作的最简单方法是创建 SOAP 扩展。我在这里找到了一个很好的教程。

http://www.codeproject.com/KB/webservices/efficientsoapextension.aspx

于 2011-10-18T08:22:00.120 回答