'错误序列化身体'.通过.NET 3.5调用Fedex webservice的问题

Sim*_*ver 9 .net web-services

我正在使用Fedex的Web服务并且在我真正能够到达任何地方之前预先得到一个恼人的错误.

序列化消息addressValidationRequest1的主体时出错:'无法生成临时类(result = 1).错误CS0030:无法将类型'FedEx.InterOp.AddressValidationServiceReference.ParsedElement []'转换为'FedEx.InterOp.AddressValidationServiceReference.ParsedElement'错误CS0029:无法将类型'FedEx.InterOp.AddressValidationServiceReference.ParsedElement'隐式转换为'FedEx.InterOp.AddressValidationServiceReference .ParsedElement []''.有关更多详细信息,请参阅InnerException.

我正在使用.NET 3.5并为我生成了一个可怕的命名类(我不确定为什么它不仅仅是AddressValidationService):

AddressValidationPortTypeClient addressValidationService = new ...;

在这堂课上,我打电话给我:

addressValidationService.addressValidation(request);

这是我收到此错误的时候.

我能找到这个错误的唯一参考来自古老的1.1项目.在我的情况下,我的DLL引用了System.Web和System.Web.Services,这似乎是一个问题.

Sim*_*ver 20

您只需要更改[] [],而不是单个[].

在Reference.cs中更改

private ParsedElement[][] parsedStreetLineField;
to
private ParsedElement[] parsedStreetLineField;
and
public ParsedElement[][] ParsedStreetLine {
to
public ParsedElement[] ParsedStreetLine {
Run Code Online (Sandbox Code Playgroud)

  • 人们还是真的需要这个答案!cmon fedex! (3认同)

Sim*_*ver 7

原来联邦快递自己的文档涵盖了这一点!

我使用Microsoft的wsdl.exe生成代码,我收到错误CS0029:无法将类型'fedexreq.ParsedElement'隐式转换为'fedexreq.ParsedElement []'.

这是由Web服务描述语言工具(Wsdl.exe)生成的错误,用于生成客户端信息.当您发布包含maxOccurs属性设置为"unbounded"值的嵌套节点的架构时,Wsdl.exe工具会在生成的代码文件中创建多维数组.因此,生成的代码包含嵌套节点的不正确类型.要解决从数据类型delectation语句中删除括号([])数组字符来修改生成的代码.有关详细信息,请参阅http://support.microsoft.com/kb/326790/en-ushttp://support.microsoft.com/kb/891386


小智 6

注意:要访问Simon_Weaver所指的Reference.cs文件,请在visual studio中打开该项目,然后在Solution Explorer中单击Web Reference,然后查看Solution Explorer顶部的小图标.单击"显示所有文件"图标以显示隐藏文件.现在展开Web引用,然后展开里面的Reference.map,最后你会看到你可以编辑的Reference.cs,用[]替换[] []

不要将此Reference.cs与您在下载示例代码时从Fedex获得的Reference.cs混淆.