【问题标题】:DataContract and Serializable in WCF ServiceWCF 服务中的 DataContract 和 Serializable
【发布时间】:2012-07-16 08:53:18
【问题描述】:

我尝试使用 WCF (REST) 服务编写一个演示,并使用 LinqToSQL 作为我的数据库运算符。 当我尝试在我的域对象上发布 [DataContract] 或 [Serializable] 时,它无法序列化为 JSON。我只能在我的浏览器中获得一对“{}”。去掉[DataContract]或[Serializable]属性后,又恢复正常了。

[DataContract]
public partial class MyDoc{ } // a Linq To SQL domain class

获取方法:

    [WebGet(UriTemplate = "GetMyDoc/{docID}",ResponseFormat=WebMessageFormat.Json)]       
    [ServiceKnownType(typeof(MyDoc))]
    public WcfRESTfulTest.Db.MyDoc GetMyDoc(string docID)
    {
        WcfRESTfulTest.Db.DbDataContext db = new DbDataContext();
        var query = db.MyDocs.Where(d => d.DocID.Equals(Int32.Parse(docID)));
        return query.FirstOrDefault();
    }

【问题讨论】:

    标签: json wcf rest service datacontract


    【解决方案1】:

    如果不使用[DataContract] 属性,所有公共属性都将被序列化。如果确实使用它,则必须使用 [DataMember] 属性选择加入要序列化的属性。

    【讨论】:

    • 在带有 webHttpBinding 的普通 WCF 服务中,我发现一些属性,例如带有 [Serializable] 的 mydoc._DocID,以及仅带有 [DataContract] 的客户端中的 mydoc.DocID 和 mydoc.DocIDSpecified (bool)。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多