Web 服务不会序列化请求的所有属性



Hei all,

我注意到我的 SOAP Web 服务有一个奇怪的行为。

通过 soap ui 发送请求时,我填充了对象的每个属性。

在调试 Web 服务时,只有几个属性填充。似乎 15 个属性中的前 5 个属性已填满。在 Soap 请求中切换属性时,将再次填充前 5 个属性。

有没有人知道,为什么请求对象的序列化不起作用?

接口被定义为操作合约、属性和请求类为数据成员/数据契约。

这是请求类

[DataContract]
public class Article
{
    [DataMember]
    public String ArticleName
    {
        get { return _ArticleName; }
        set { _ArticleName = value; }
    }
    [DataMember]
    public String Description
    {
        get { return _Description; }
        set { _Description = value; }
    }
    [DataMember]
    public Int ProductSubGroupNumber
    {
        get { return _ProductSubGroupNumber; }
        set { _ProductSubGroupNumber = value; }
    }
    [DataMember]
    public Double ArticleNumber
    {
        get { return _ArticleNumber; }
        set { _ArticleNumber = value; }
    }
    [DataMember]
    public Int Color
    {
        get { return _Color; }
        set { _Color = value; }
    }
    [DataMember]
    public Double Quantity
    {
        get { return _Quantity; }
        set { _Quantity = value; }
    }
    [DataMember]
    public Int Version
    {
        get { return _Version; }
        set { _Version = value; }
    }
    [DataMember]
    public Int Material
    {
        get { return _Material; }
        set { _Material = value; }
    }
    [DataMember]
    public Int Warehouse
    {
        get { return _Warehouse; }
        set { _Warehouse = value; }
    }
}

和肥皂请求

      <CreateArticle>
     <ArticleGroup>1232456789</ArticleGroup>
     <Articles>
        <Article>
           <ArticleName>test</ArticleName>
           <Description>TEST 1213123</Description>
           <ProductSubGroupNumber>987654</ProductSubGroupNumber>
           <ArticleNumber>12345</ArticleNumber>
           <Color>0</Color>
           <Quantity>1</Quantity>
           <Material>0</Material>
           <Warehouse>0</Warehouse>
           <Version>0</Version>
        </Article>
     </Articles>
  </CreateArticle>

在调试器中只有属性直到颜色填充 - 其余为空。如果我在请求中交换它们,其他的已填充,而其他的则不已填充。

该请求包含一个作为 int 的文章组 ID 和一个项目数组。

看起来这是DataContractSerializer挑剔的"命令"执行。它真的想知道数据的顺序。您可以尝试对其进行教育:

[DataMember(Order=0)]
public string ArticleName {get;set;}
[DataMember(Order=1)]
public string Description {get;set;}
[DataMember(Order=2)]
public int ProductSubGroupNumber {get;set;}
[DataMember(Order=3)]
public double ArticleNumber {get;set;}
[DataMember(Order=4)]
public int Color {get;set;}
[DataMember(Order=5)]
public double Quantity {get;set;}
[DataMember(Order=8)]
public int Version {get;set;}
[DataMember(Order=6)]
public int Material {get;set;}
[DataMember(Order=7)]
public int Warehouse {get;set;}

相关内容

  • 没有找到相关文章

最新更新