C# Mono wsdl实用程序无法处理易趣';为他们的SOAP API创建WSDL文件

C# Mono wsdl实用程序无法处理易趣';为他们的SOAP API创建WSDL文件,c#,web-services,mono,wsdl,ebay-api,C#,Web Services,Mono,Wsdl,Ebay Api,我在尝试处理eBay的wsdl文件时,从Mono的wsdl实用程序中发现此错误- () 在谷歌搜索解决方案时,有人建议更改以开头的元素。我不知道这是否解决了您的问题,但您的问题中缺少两个'#': 发件人: 将xmlanyementAttribute应用于返回xmlement或XmlNode对象数组的字段。根据对象是被序列化还是反序列化,此类字段可以以两种方式使用。序列化时,对象生成为XML元素或节点,即使它们在被序列化的对象中没有相应的成员。如果在应用属性时指定Name属性值,则插入到数组中的所

我在尝试处理eBay的wsdl文件时,从Mono的wsdl实用程序中发现此错误-

()


在谷歌搜索解决方案时,有人建议更改以
开头的元素。我不知道这是否解决了您的问题,但您的问题中缺少两个
'#'

发件人:

xmlanyementAttribute
应用于返回
xmlement
XmlNode
对象数组的字段。根据对象是被序列化还是反序列化,此类字段可以以两种方式使用。序列化时,对象生成为XML元素或节点,即使它们在被序列化的对象中没有相应的成员。如果在应用属性时指定
Name
属性值,则插入到数组中的所有
xmlement
XmlNode
对象必须具有相同的元素名称和默认命名空间,否则会引发异常如果设置
名称空间
属性值,则必须同时设置
名称
属性
,并且
XmlElement
XmlNode
对象也必须具有相同的名称和名称空间值。如果未指定
Name
值,则
xmlement
XmlNode
对象可以具有任何元素名称

因此,我猜解决方案是简单地删除
名称空间
属性值:

[System.Xml.Serialization.XmlAnyElement]

我不知道这是否解决了您的问题,但您的问题中缺少两个
“#”

发件人:

xmlanyementAttribute
应用于返回
xmlement
XmlNode
对象数组的字段。根据对象是被序列化还是反序列化,此类字段可以以两种方式使用。序列化时,对象生成为XML元素或节点,即使它们在被序列化的对象中没有相应的成员。如果在应用属性时指定
Name
属性值,则插入到数组中的所有
xmlement
XmlNode
对象必须具有相同的元素名称和默认命名空间,否则会引发异常如果设置
名称空间
属性值,则必须同时设置
名称
属性
,并且
XmlElement
XmlNode
对象也必须具有相同的名称和名称空间值。如果未指定
Name
值,则
xmlement
XmlNode
对象可以具有任何元素名称

因此,我猜解决方案是简单地删除
名称空间
属性值:

[System.Xml.Serialization.XmlAnyElement]

很好的发现——这是我犯的一个错误,我确实尝试了“###other”——这让wsdl工具很高兴,但在运行简单的C程序实例化webservice助手时,我仍然遇到了运行时异常class@dtb:感谢您关于删除命名空间属性值的建议,这似乎确实修复了我得到的运行时异常,但现在我得到了一个新的运行时异常:“未处理的异常:System.InvalidOperationException:Member RequesterCredentialsField未在类eBayAPIInterfaceService中找到。”-这很奇怪,因为RequesterCredentialsField是eBayAPIInterfaceService中的第一个成员。我不明白它为什么找不到它。
RequesterCredentialsField
字段是私有的。XmlSerialization仅适用于公共属性/字段,也就是说,它应该使用public
RequesterCredentials
属性而不是private字段。谢谢,从生成的XmlAnyElement属性中删除名称空间并使用public RequesterCredentials字段非常有效。很好的发现-我犯了一个错误,实际上,我确实尝试了“##other”-这让wsdl工具很高兴,但在运行简单的C程序实例化webservice helper时,我仍然遇到了运行时异常class@dtb:感谢您关于删除命名空间属性值的建议,这似乎确实修复了我遇到的运行时异常,但现在我得到了一个新的运行时异常:“未处理的异常:System.InvalidOperationException:在类eBayAPIInterfaceService中找不到成员RequesterCredentialsField。”-这很奇怪,因为RequesterCredentialsField是eBayAPIInterfaceService中的第一个成员。我不明白它为什么找不到它。
RequesterCredentialsField
字段是私有的。XmlSerialization仅适用于公共属性/字段,即它应该使用公共
RequesterCredentials
属性而不是私有字段。谢谢,从生成的XmlAnyElement属性中删除名称空间并使用公共RequesterCredentialsField工作得很好。
ErrorParameterType.Any
的生成代码是什么样子的?@dtb:我已经在问题文本中添加了ErrorParameterType的定义,我在源代码中找不到
ErrorParameterType.Any
。我添加了一个指向正在生成的完整.cs文件的链接。该链接将Makefile和my test.cs放在同一目录中。
Namespace=”“
似乎是罪魁祸首;我在MSDN上找到了一条引文(见我的答案)。为
ErrorParameterType.Any
生成的代码是什么样子的?@dtb:我在问题文本中添加了ErrorParameterType的定义,但在源代码中找不到
ErrorParameterType.Any
。我添加了一个指向正在生成的完整.cs文件的链接。该链接将Makefile和my test.cs放在同一目录中。
Namespace=”“
似乎是罪魁祸首;我在MSDN上找到了一条引文(见我的答案)。
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "2.0.50727.1433")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:ebay:apis:eBLBaseComponents")]
public partial class ErrorParameterType {

    private System.Xml.XmlElement[] anyField165;

    ... more class members follow ...

    /// <remarks/>
    [System.Xml.Serialization.XmlAnyElement(Namespace="")]
    public System.Xml.XmlElement[] Any {
        get {
            return this.anyField165;
        }
        set {
            this.anyField165 = value;
        }
    }
}
<xs:any namespace="##other" ...
                   ↑
[System.Xml.Serialization.XmlAnyElement(Namespace="")]
public System.Xml.XmlElement[] Any {
    get {
        return this.anyFieldXXX;
    }
    set {
        this.anyFieldXXX = value;
    }
}
[System.Xml.Serialization.XmlAnyElement]