DataContractSerializer.MaxItemsInObjectGraph 屬性

定義

取得物件圖形中要序列化或還原序列化的最大項目數。

public:
 property int MaxItemsInObjectGraph { int get(); };
public int MaxItemsInObjectGraph { get; }
member this.MaxItemsInObjectGraph : int
Public ReadOnly Property MaxItemsInObjectGraph As Integer

屬性值

Int32

要序列化或還原序列化的最大項目數。 預設為 MaxValue

例外狀況

超過最大值的項目數。

備註

這個屬性可在組態中設定,或是在程式碼中以命令方式設定。 若要在組態中設定,請將自訂行為加入到行為區段中,並且加入下列設定。

<behaviors>    <behavior name="MyServiceBehavior">        <dataContractSerializer maxItemsInObjectGraph="3" />    </behavior></behaviors>  

若要在程式碼中以命令方式設定這個屬性,請找出服務的作業描述,然後取得作業行為,最後如下列程式碼所示設定該屬性。

OperationDescription operation = host.Description.Endpoints[0].Contract.Operations.Find("MyOperationName");operation.Behaviors.Find<DataContractSerializerOperationBehavior>().MaxItemsInObjectGraph = 3;  

MaxItemsInObjectGraph 屬性會指定序列化程式在單一 ReadObject 方法呼叫中,序列化或還原序列化的最大物件數。 (此方法一定會讀取一個根物件,但是這個物件可能會在其資料成員中又有其他物件。 這些物件可能有其他物件,依此類) 預設值為 MaxValue 。 請注意,當序列化或還原序列化陣列時,每個陣列項目都視為個別物件。 另外請注意,有些物件可能有大量記憶體表示,因此只靠這個配額可能仍無法防止阻絕服務攻擊。 如需詳細資訊,請參閱 資料的安全性考慮。 如果您需要將這個配額增加超過其預設值,您就必須在傳送端 (進行序列化) 和接收端 (進行還原序列化) 同時執行這項操作。 這個做法在讀取和寫入資料時均適用。

適用於