0

WCF(REST)サービスを使用してデモを作成しようとしていますが、db演算子としてLinqToSQLを使用しています。ドメインオブジェクトの上に[DataContract]または[Serializable]を公開しようとすると、JSONにシリアル化できません。ブラウザで取得できるのは「{}」のペアのみです。[DataContract]または[Serializable]属性を削除すると、再び正常になります。

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

getメソッド:

    [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();
    }
4

1 に答える 1

0

属性を使用しない場合[DataContract]、すべてのパブリックプロパティがシリアル化されます。これを使用する場合は、属性を使用して、シリアル化するプロパティをオプトインする必要があり [DataMember]ます。

于 2012-07-16T09:05:43.317 に答える