C# .Net Web 服务处理 3 嵌套响应

C# .Net web service handle 3 nested response

我的 soap 端点地址 returns 这样的 soap 响应和 .net 无法序列化 queryParameter queryParameter queryParameter 级别。 它 returns 为空。

我们如何解决这个问题?

<ResultInfos>
    <ResultInfos>
        <queryParameter>
            <queryParameter>
                <queryParameter>
                    <parameterFormat/>
                    <parameterName/>
                    <parameterType>dfgsfgsd</parameterType>
                    <parameterValue>2342234</parameterValue>
                </queryParameter>
                <queryParameter>
                    <parameterFormat/>
                    <parameterName/>
                    <parameterType>safd</parameterType>
                    <parameterValue>234234</parameterValue>
                </queryParameter>
                <queryParameter>
                    <parameterFormat/>
                    <parameterName/>
                    <parameterType>sfsdf</parameterType>
                    <parameterValue>3454</parameterValue>
                </queryParameter>
                <queryParameter>
                    <parameterFormat/>
                    <parameterName/>
                    <parameterType>234234</parameterType>
                    <parameterValue>A</parameterValue>
                </queryParameter>                 
            </queryParameter>
        </queryParameter>
    </ResultInfos>
</ResultInfos>

我们将编辑 .net 生成的 reference.cs。 .Net 无法处理那种响应。我们会帮助它。

打开您的网络服务 reference.cs 并将这些行添加到 class 的顶部。 在我们的例子中,queryparameter[][].

关键字是 NestingLevel 属性。

 [System.Xml.Serialization.XmlArrayAttribute(IsNullable=true)]
    [System.Xml.Serialization.XmlArrayItemAttribute("queryParameter", Namespace = "http://wsserver", IsNullable = false)]
    [System.Xml.Serialization.XmlArrayItemAttribute("queryParameter", Namespace = "http://wsserver", IsNullable = false, NestingLevel = 1)]
    [System.Xml.Serialization.XmlArrayItemAttribute("queryParameter", Namespace = "http://wsserver", IsNullable = false, NestingLevel = 2)]
    public QueryParameter[][] queryParameter {
        get {
            return this.queryParameterField;
        }
        set {
            this.queryParameterField = value;
        }
    }