Microsoft MVP성태의 닷넷 이야기
WCF에서 maxItemsInObjectGraph 오류 관련 질문드립니다. [링크 복사], [링크+제목 복사],
조회: 18925
글쓴 사람
채동민
홈페이지
첨부 파일
 

안녕하세요. 삼성중공업 채동민입니다. 직장 옮기셨다죠. 잘 지내시는지요?

wcf 통신중 MaxItemsInObjectGraph관련 오류가 생겼는데 원인을 찾기 힘들어서 질문드려요.

------------------------------------ 오류내용
Event Type: Error
Event Source: HSServer
Event Category: None
Event ID: 0
Date: 4/19/2010
Time: 7:39:39 PM
User: N/A
Computer: MSDHS
Description:
tickTimer_Elapsed(HS) - DaqServer.GetValue/GetChange
MSDHS ? mscorlib ?? ??? ???????.

ErrorMessage : The formatter threw an exception while trying to deserialize the message: There was an error while trying to deserialize parameter http://tempuri.org/:GetChangesResult. The InnerException message was 'Maximum number of items that can be serialized or deserialized in an object graph is '65536'. Change the object graph or increase the MaxItemsInObjectGraph quota. '. Please see InnerException for more details.

Server stack trace:

Exception rethrown at [0]:
at IAS.ServiceRef.DaqServiceRef.IDaqService.GetChanges()
at IAS.ServiceRef.DaqServiceRef.DaqServiceClient.GetChanges() in d:\work\iaspackage\IASPackage\Dailybuild_Release_Msdcore\Sources\IAS_Solution_2006_10_12\ServiceInterfaceProjects\IAS.ServiceRef\Service References\DaqServiceRef\Reference.cs:line 1550
at HSServiceLibrary.TagHistoryProcess.tickTimer_Elapsed(Object sender, ElapsedEventArgs e) in d:\work\iaspackage\IASPackage\Dailybuild_Release_Msdcore\Sources\IAS_Solution_2006_10_12\ServiceInterfaceProjects\IAS.HSService\History\TagHistoryProcess.cs:line 291
-----------------------------------------------------
ErrorMessage : Maximum number of items that can be serialized or deserialized in an object graph is '65536'. Change the object graph or increase the MaxItemsInObjectGraph quota.
at ReadArrayOfItemTFromXml(XmlReaderDelegator , XmlObjectSerializerReadContext , XmlDictionaryString , XmlDictionaryString , CollectionDataContract )

------------------------------------------------------------------------------------------------------------------
app.config 상의 maxItemsInObjectGraph 필드는 아래와 같이 충분히 큰데 65536을 넘는다는 오류가 뜨는군요.

<behaviors>
<serviceBehaviors>
<behavior name="HSServiceLibrary.ServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
<serviceThrottling maxConcurrentSessions="50"/>
</behavior>
</serviceBehaviors>
</behaviors>

안녕히 계세요..








[최초 등록일: ]
[최종 수정일: 5/19/2010]


비밀번호

댓글 작성자
 



2010-04-21 01시14분
넵. 저는 잘 지내고 있습니다. ^^

음... 보내주신 거는... 예외 메시지의 콜스택을 보아하니 클라이언트 측에서 호출한 것이 오류가 발생하는 것인데요.
반면 app.config 에서는 serviceBehaviors로 해서 서비스 측에 적용되는 설정값을 보여주고 있습니다. 그렇다면 오류가 발생하는 것이 맞습니다.

클라이언트 측에 설정값이 적용되려면 endpointBehaviors 에 설정이 되어야 합니다.

<behaviors>
<serviceBehaviors>
</serviceBehaviors>
<endpointbehaviors>
<behavior name="myBehavior">
<datacontractserializer maxitemsinobjectgraph="2147483647" />
</behavior>
</endpointbehaviors>
</behaviors>

kevin25
2010-05-16 05시59분
[누굴까~~요?^^] 예서 채선임님도 뵙네요...
반갑습니다.
[guest]

NoWriterDateCnt.TitleFile(s)