WCF 客户端 - 缺少数组元素
WCF Client - Missing Array Elements
我使用 .net 4.5 和 WCF 访问数据服务。
现在一方面 wcf 没有 return 服务中的数组元素。
记录的 xml 响应部分如下所示
<v1:itemParts>
<v1:itemPart xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="v1:foundItemPart">
<v1:frId>1603795000</v1:frId>
<v1:tId>509515001</v1:tId>
<v1:date1>2015-05-19T07:15:00+02:00</v1:date1>
<v1:sub>
<v1:id>2006960476</v1:id>
</v1:sub>
<v1:aviableItems>
<entry xmlns="">
<key>NO</key>
<value>14</value>
</entry>
</v1:aviableItems>
</v1:itemPart>
</v1:itemParts>
缺少的部分是aviableItems,它生成为没有项目的空数组
wsdl 对这部分的定义如下:
<xs:element name="aviableItems">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="entry">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="key" type="v1:seatClassEnum"/>
<xs:element minOccurs="0" name="value" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
生成的类型定义如下:
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.34230")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="urn:myServer.it/v1")]
public partial class aviableItems: object, System.ComponentModel.INotifyPropertyChanged {
我不明白为什么你的项目没有在数组中生成。 wsdl 中是否存在定义错误?
我看到 visual studio 使用命名空间 "urn:myServer.it/v1" 创建了 class 但在响应中服务告诉 xmlns="" 这可能是错误吗?
解决方法是响应中的"xmlns"属性设置为空字符串是错误的,所以命名空间没有在wsdl中定义。
我使用 .net 4.5 和 WCF 访问数据服务。
现在一方面 wcf 没有 return 服务中的数组元素。
记录的 xml 响应部分如下所示
<v1:itemParts>
<v1:itemPart xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="v1:foundItemPart">
<v1:frId>1603795000</v1:frId>
<v1:tId>509515001</v1:tId>
<v1:date1>2015-05-19T07:15:00+02:00</v1:date1>
<v1:sub>
<v1:id>2006960476</v1:id>
</v1:sub>
<v1:aviableItems>
<entry xmlns="">
<key>NO</key>
<value>14</value>
</entry>
</v1:aviableItems>
</v1:itemPart>
</v1:itemParts>
缺少的部分是aviableItems,它生成为没有项目的空数组
wsdl 对这部分的定义如下:
<xs:element name="aviableItems">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="entry">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="key" type="v1:seatClassEnum"/>
<xs:element minOccurs="0" name="value" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
生成的类型定义如下:
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.34230")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="urn:myServer.it/v1")]
public partial class aviableItems: object, System.ComponentModel.INotifyPropertyChanged {
我不明白为什么你的项目没有在数组中生成。 wsdl 中是否存在定义错误?
我看到 visual studio 使用命名空间 "urn:myServer.it/v1" 创建了 class 但在响应中服务告诉 xmlns="" 这可能是错误吗?
解决方法是响应中的"xmlns"属性设置为空字符串是错误的,所以命名空间没有在wsdl中定义。