将WCF项目平台更改为x86会返回意外结果

时间:2013-12-25 22:50:58

标签: c# wcf datacontract

您好我写的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类的类......

1 个答案:

答案 0 :(得分:1)

使用tcp数据包捕获软件捕获从服务到客户端的消息。如果消息中没有步骤,那么它是服务器端问题。如果返回了步骤,那么它就是客户端反序列化问题。