使用c#使用wsdl web服务时出错。格式化程序在尝试反序列化消息时引发异常

使用c#使用wsdl web服务时出错。格式化程序在尝试反序列化消息时引发异常,c#,asp.net,web-services,wsdl,webservice-client,C#,Asp.net,Web Services,Wsdl,Webservice Client,我正在尝试使用C#使用wsdl web服务(java)。我添加了服务引用并实现了webmethod调用,但它返回以下错误: 格式化程序在尝试反序列化消息时引发异常: 尝试反序列化参数时出错。InnerException消息是“第1行位置456处出错”命名空间“”中的EndElement“”methodNameReturn“”不应为空。应为元素“idSomething”。有关更多详细信息,请参阅InnerException 我已经尝试了很多东西,比如大小限制、在主机文件上添加ip等等,但都没有成功

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

尝试反序列化参数时出错。InnerException消息是“第1行位置456处出错”命名空间“”中的EndElement“”methodNameReturn“”不应为空。应为元素“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返回错误

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

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

[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://dto.services.company.trielo.com.br")]
我正在发布wsdl:
http://177.140.208.200:8998/mdc4web/services/VisitantesSASweb?wsdl

介于

InnerException消息是“第1行位置456中的错误”。 命名空间中的“EndElement”“methodNameReturn” 不应为“”。期望 元素“idSomething.”。有关更多详细信息,请参阅InnerException

……还有

InnerException是“第1行位置456的错误。'EndElement' 来自命名空间的“somethingReturn” 不应为“”。应为“” 元素“idSomething.”和InnerException消息为空

听起来好像web服务的响应内容违反了用于反序列化它的模式(基本上我认为Barrakoda就是这么做的)——尽管在没有看到响应内容本身和模式定义(假定通过对的名称空间引用定义)的情况下很难确定

InnerException消息是“第1行位置456中的错误”。 命名空间中的“EndElement”“methodNameReturn” 不应为“”。期望 元素“idSomething.”。有关更多详细信息,请参阅InnerException

……还有

InnerException是“第1行位置456的错误。'EndElement' 来自命名空间的“somethingReturn” 不应为“”。应为“” 元素“idSomething.”和InnerException消息为空


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

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

查看代理生成的文件:

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

[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://dto.services.mdc4web.trielo.com.br")]
您需要删除“dto”

第二点是“lst”数组声明的XmlArrayItemAttribute处的elementName参数

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

在这些更改之后,应该可以正常工作

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


希望这有帮助

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

查看代理生成的文件:

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

[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://dto.services.mdc4web.trielo.com.br")]
您需要删除“dto”

第二点是“lst”数组声明的XmlArrayItemAttribute处的elementName参数

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

在这些更改之后,应该可以正常工作

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


希望这有帮助

您是否注意到“请参阅InnerException以了解更多详细信息”消息?InnerException是“第1行位置456处出错。不需要命名空间“ht tp://services.companyName.com.br”中的EndElement“somethingReturn”。需要元素“idSomething”。”}InnerException消息为空。请使用一些代码添加有关错误的详细信息,请参阅任何帮助。您不应该修改Reference.cs文件,因为这都是代码生成。听起来您删除了部分请求的命名空间,但现在它没有正确序列化/反序列化。您应该将该行放回,然后尝试另一条路线。@Barrakoda,tks,但我重新创建了引用,并且正在使用服务引用。这只是我按照我得到的示例所做的测试。您是否注意到“请参阅InnerException以了解更多详细信息”消息?InnerException是“第1行位置456处出错。不需要命名空间“ht tp://services.companyName.com.br”中的EndElement“somethingReturn”。需要元素“idSomething”。“}InnerException消息为空。请使用一些代码添加有关错误的详细信息,请参阅任何帮助。您不应该修改Reference.cs文件,因为这都是代码生成。听起来您删除了部分请求的命名空间,但现在它没有正确序列化/反序列化。您应该将该行放回,然后尝试另一条路线。@Barrakoda,tks,但我重新创建了引用,并且正在使用服务引用。这只是我按照我得到的一个例子做的一个测试。我希望发布wsdl没有问题:问题是我没有这个web服务的权限我希望发布wsdl没有问题:问题是我没有这个web服务的权限太多了!它现在运转良好。我不相信这是AXIS和.NET之间的一个已知问题。我们几乎得到了fiz,删除了部分dto,但“lst”的对应项没有。太多了,太多了!它现在运转良好。我不相信这是AXIS和.NET之间的一个已知问题。我们差一点拿到了fiz,把dto拆了