使用webmethod传递的对象丢失了一些值,但不是全部

时间:2011-06-22 16:13:59

标签: c# .net vb.net web-services asmx

我会试着清楚地解释一切。

调用webmethod

[WebMethod]
public Profile synchronize(string MID, DeviceUploadData data)

对象DeviceUploadData有许多属性,其中一些是数组。我的问题是关于阵列的具体问题。一旦它在网络方法结束时收到它就失去了它的价值。

这是DeviceUploadData

中的属性
Private data() As DataObject
Public Property Data() As DataObject()
    Get
        Return Me.data
    End Get
    Set(value As DataObject())
        Me.data = value
    End Set
End Property

这是

中的DataObject对象
 <System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.225"), _
         System.SerializableAttribute(), _
         System.Diagnostics.DebuggerStepThroughAttribute(), _
         System.ComponentModel.DesignerCategoryAttribute("code"), _
         System.Xml.Serialization.XmlTypeAttribute([Namespace]:="http://somethingsomething")> _
        Public Class DataObject
            Dim _calories As Double
            Public Property Calories() As Double
                Get
                    Return _calories
                End Get
                Set(value As Double)
                    _calories = value
                End Set
            End Property
End Class

这是webmethod端的

上的DeviceUploadData对象
public class DataObject
    {
        private List<DataObject> _data;
        public List<DataObject> data
        {
            get { return _data; }
            set { _data = value; }
        }
}

这是webmethod端的DataObject

public class DataObject
    {
        #region class variables
        double _calories;
        public double Calories
        {
            get { return _calories; }
            set { _calories = value; }
        }
}

因此DataObject填充了数据,然后一旦传递,另一端就不再填充某些DataObject属性。我没有在此示例中包含其他属性。

1 个答案:

答案 0 :(得分:1)

解决了!所有参数和方法必须在客户端和Web对象中完全相同。

我想在我的例子中很难看到,因为我已经将它们标记为相同。

希望这可以帮助那些人。