【问题标题】:Values coming from the Web API 2 to the client are null after Serializing a Data transfer Object从 Web API 2 到客户端的值在序列化数据传输对象后为空
【发布时间】:2016-03-08 05:46:48
【问题描述】:

类实现

[Serializable]
public class Apple
{
    
    string name{get;set;}


}

这驻留在服务器端和来自 Web API 2 并返回一个苹果对象。如果我不使用 serializable 属性,我会从客户端获取正确的值,但如果我使用 Serialized 我会得到 null 的 name 。我该如何解决这个问题?

【问题讨论】:

    标签: c# mongodb asp.net-web-api asp.net-web-api2


    【解决方案1】:

    您不必指定 [Serializable] 属性,因为无论您是否指定,Asp.Net WebApi 默认都会序列化您的公共属性。你得到空对象的原因是因为你重新调整的 json 不是正常的形式。

    第一个解决方案: 如果你真的想使用 [Serializable] 属性,那么你需要配置 Serializer formatter (json or xml) in WebApi 2 并且你需要使用 [DataContract] 和 [DataMember] 以及 [Serializable]。

    [Serializable]
    [DataContract]
    public class Apple
    {
       [DataMember]
       string name{get;set;}
    }
    

    第二种解决方案: 您可以将 Serializer 配置为忽略 [Serializable] 属性。通过这样做,您不必像我上面指定的那样添加额外的类属性。

    var serializerSettings = GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings;
    var contractResolver = (DefaultContractResolver)serializerSettings.ContractResolver;
    contractResolver.IgnoreSerializableAttribute = true;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-11
      • 2022-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多