다음을 통해 공유


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 serializer가 단일 ReadObject 메서드 호출에서 직렬화하거나 역직렬화하는 최대 개체 수를 지정합니다. 메서드는 항상 하나의 루트 개체를 읽지만 이 개체의 데이터 멤버에 다른 개체가 있을 수 있습니다. 이러한 개체에는 다른 개체가 있을 수 있습니다.) 기본값은 입니다 MaxValue. 배열을 직렬화하거나 역직렬화할 때 모든 배열 항목은 개별 개체로 계산됩니다. 또한 일부 개체에는 큰 메모리 표현이 있을 수 있으므로 이 할당량만으로는 서비스 거부 공격을 방지하기에 충분하지 않을 수 있습니다. 자세한 내용은 데이터에 대한 보안 고려 사항을 참조하세요. 이 할당량을 기본값 이상으로 늘려야 하는 경우 송신(직렬화) 및 수신(역직렬화) 쪽 모두에서 이 할당량을 늘리는 것이 중요합니다. 데이터를 읽고 쓸 때 모두 적용됩니다.

적용 대상