【问题标题】:Changing WCF project platform to x86 return unexpected results将 WCF 项目平台更改为 x86 会返回意外结果
【发布时间】:2013-12-26 20:57:24
【问题描述】:

您好,我编写了 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();
}

我的服务的目标平台是Any 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类的类...

【问题讨论】:

  • 你调试了吗?在没有看到任何代码的情况下,不太可能有人会在这里立即提出解决方案。
  • 是的,我在 x86 时对其进行了调试不抛出异常!
  • WCF 测试客户端是否也返回一个空列表?
  • 你能根据你的服务实现提供一个重现吗?
  • 你试过返回List&lt;Step&gt;吗?

标签: c# wcf datacontract


【解决方案1】:

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

【讨论】:

  • 我做到了,这是 ASP.NET MVC 的客户端反序列化问题我不知道为什么......
猜你喜欢
  • 2017-07-07
  • 1970-01-01
  • 1970-01-01
  • 2017-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多