格式化程序在尝试反序列化消息时抛出异常

本文关键字:消息 抛出异常 反序列化 程序 格式化 | 更新日期: 2023-09-27 18:10:41

我正在尝试使用c#使用wsdl web服务(java)。我添加了服务引用并实现了webmethod调用,但它返回以下错误:格式化程序在试图反序列化消息时抛出异常:

试图反序列化参数http://services.company.companyname.com.br:methodNameResponse时出现错误。InnerException消息为"第1行位置456出错"。'EndElement' 'methodNameReturn'从命名空间'http://services.company.companyname.com.br'是不期望的。期待元素"idSomething"。详情请参见InnerException。

我已经尝试了很多事情,比如限制大小,在主机文件上添加ip等,但没有成功。有人知道吗?

代码是:

var ws = new webService(); //invoked using the service reference
var return = ws.methodName("x", "CAY", "5454545", "XXXX", "xxx", "09/07", "A", 1,
                                               "23/04/2013", "23/04/2013", "15:00", "17:00");

ws。methodName返回错误。

我已经尝试了请求和响应对象,得到了相同的错误。

我使用web参考进行了测试。我找到了一种方法,它不会返回错误,但我需要修改引用文件,在调用的方法上方注释以下行:

[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://dto.services.company.trielo.com.br")]

我张贴wsdl: http://177.140.208.200:8998/mdc4web/services/VisitantesSASweb?wsdl

格式化程序在尝试反序列化消息时抛出异常

我发现Visual Studio生成的代理类和服务WSDL之间可能存在两个问题

查看代理生成的文件:

第一个错误是RetVisSRV类中的XmlTypeAttribute属性的名称空间参数

[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://dto.services.mdc4web.trielo.com.br")]

则需要删除"dto"。"

[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://services.mdc4web.trielo.com.br")]

第二点是"lst"数组声明中的XmlArrayItemAttribute中的elementName参数。

[System.Xml.Serialization.XmlArrayItemAttribute("item", Namespace="http://services.mdc4web.trielo.com.br", IsNullable=false)]

更正为"lst"

[System.Xml.Serialization.XmlArrayItemAttribute("lst", Namespace="http://services.mdc4web.trielo.com.br", IsNullable=false)]

修改后应该可以正常工作。

这个命名空间问题是AXIS和。net客户端之间的一个已知问题,但我不知道为什么还没有解决

见https://issues.apache.org/jira/browse/axis - 2449

希望能有所帮助

Between…

InnerException消息是'Error in line 1 position 456。从命名空间'EndElement' 'methodNameReturn'"http://services.company.companyname.com.br"不受欢迎。期待元素"idSomething"。"。详情请参见InnerException。

……

InnerException是" line 1 position 456出错"。"EndElement"从命名空间返回'somethingReturn'"http://services.company.companyName.com.br"不受欢迎。期待元素"idSomething"。}并且InnerException消息为空。

听起来好像web服务的响应内容违反了用于反序列化它的模式(基本上我认为Barrakoda的意思是)——尽管在没有看到响应内容本身和模式定义(假定通过对http://services.company.companyname.com.br的命名空间引用定义)的情况下很难确定。