您好我写的WCF服务使用实体框架代码第一个实体作为数据合同,例如我有Step实体:
[DataContract(IsReference=true)]
public class Step
{
[Key]
public int Id { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public string Description { get; set; }
[DataMember]
public int Order { get; set; }
[DataMember]
public string ExpectedResult { get; set; }
[DataMember]
public bool ContinueOnFail { get; set; }
#region Navigation Properties
[DataMember]
public virtual Test Test { get; set; }
#endregion
}
我的服务功能中有 IEnumrable
[ServiceContract]
public interface IStepsService
{
IEnumerable<Step> GetSteps();
}
我服务的目标平台是任何CPU 现在我需要将目标平台更改为 x86 这里是棘手的部分:没有错误被抛出,但我的服务现在总是返回一个空列表! 有人知道为什么会这样吗?
我读到了这个问题:How to change WCF project Platform Target to x86? 但它没有回答我的问题。 如果你帮助我,我会很高兴,因为这个项目必须是x86! 谢谢。
我正在添加我的实现 在服务器中,实现如下所示:
try
{
steps=(from step in db.Steps
select step).ToArray();
}
catch (Exception e)
{
Tracer.Write(Tracer.TraceLevel.ERROR, "Error in getting steps from database", e);
return null;
}
return steps;
并且在客户端它只是使用它...顺便说一下我不知道它是否重要但是客户端是ASP.NET MVC 4,它将服务引用添加到此服务...和db类是继承自实体框架DbContext类的类......
答案 0 :(得分:1)
使用tcp数据包捕获软件捕获从服务到客户端的消息。如果消息中没有步骤,那么它是服务器端问题。如果返回了步骤,那么它就是客户端反序列化问题。