调用REST Web服务时返回空类

时间:2012-02-22 01:04:58

标签: c# web-services

我已经创建了一个REST Web服务,它以其他方式正在运行我希望它工作的方式。

我有一个包含联系人的主类,在该类中,我创建了另外两个类列表。 我的主要课程,其中一个列表来自所有信息完整的电话。然而,第二堂课是空洞的。它包含列表中的每个项目,但每个列表项都是空的。

网络服务功能

        [OperationContract]
        [WebGet(UriTemplate = "/Login/{IQPid}/{Password}")]
        public IQP_Contacts Login(string IQPid, string password)
        {
            int iqpID = 0;
            try
            {
                iqpID = int.Parse(IQPid);
            }
            catch { return null; }
            IQP_Contacts contact = this.Repository.Contacts.Find(delegate(IQP_Contacts c) { return c.IqpID == iqpID; });
            if (contact.Password == password)
            {
                return contact;
            }
            else return null;
        }

调用Web服务的代码

           WebClient proxy = new WebClient();
            byte[] abc = proxy.DownloadData((new Uri("http://localhost:53468/IQP_Service.svc/Login/" + ID + "/" + password )));

            Stream strm = new MemoryStream(abc);
            DataContractSerializer obj = new DataContractSerializer(typeof(IQP_Contacts));
            IQP_Contacts contact = (IQP_Contacts)obj.ReadObject(strm);

如下所示,我的webservice类包含信息,但网页没有

Web Service

Website


如果有人有任何想法,请告诉我。我迷失在这一个。这个简单的东西不应该被打破。感谢

1 个答案:

答案 0 :(得分:3)

查看有关DataContractSerializer的文档,了解默认情况下是否有序列化的内容: http://msdn.microsoft.com/en-us/library/cc656732.aspx

没有看到你的课程很难分辨。但是您的Files属性可能是只读的(只有get个访问者而没有set),那么它就不会被序列化。

还可能取决于您是否在类上有选择地应用了[DataContract] / [DataMember]属性。这会影响DataContractSerializer将序列化/反序列化的行为。您需要指明IQP_RestWebService.Entitys.IQP_Contacts类上的“Files”属性标有[DataMember]属性,并且您在IQP_RestWebService.Entitys.Files类上有[DataContract]。