我已经创建了一个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类包含信息,但网页没有
如果有人有任何想法,请告诉我。我迷失在这一个。这个简单的东西不应该被打破。感谢
答案 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]。