2010-12-10 1 views
1

DataContractSerializer를 사용하여 캡처 된 WCF 메시지 로그 (svclog)에서 메시지를 deserialize하려고합니다.z : Id = ""(WCF 메시지 로그). deserializing 할 때 DataContractSerializer 예외가 throw됩니다.

일부 개체는 시도가 dataContractSerializer.ReadObject()를

던져 예외는 호출하는 예외를 발생 : ". 잘못된 아이디 ''널 (null)이거나 비워 둘 수 없습니다"

추가 조사에 내가 발견 svclog에 문제가있는 객체.

<personHeader xmlns:d4p1="http://schemas.datacontract.org/2004/07/Contosso.BusinessObjects" 
xmlns:i="http://www.w3.org/2001/XMLSchema-instance" z:Id="" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/"> 
<EntityKey xmlns:d5p1="http://schemas.datacontract.org/2004/07/System.Data" i:nil="true" 
xmlns="http://schemas.datacontract.org/2004/07/System.Data.Objects.DataClasses"></EntityKey> 
<UId xmlns="http://schemas.datacontract.org/2004/07/Contosso.BusinessObjects">F62C446B-C74E-4272-8338-7AF3D2957AC6</UId> 
<d4p1:CustomerType>ABC</d4p1:CustomerType> 
<d4p1:Screen>ConfigurePeople</d4p1:Screen> 
<d4p1:ShowAllDisplayToPublic>true</d4p1:ShowAllDisplayToPublic>i1</personHeader> 

무엇 실제 문제가 될 수 있으며 내가 주위 어떻게 작동합니까?

답변

0

ID 속성/필드가 필수로 표시되어 있고 Id의 xml 값이 null/empty (z : Id = "") 인 것 같습니다.

  1. 당신이 "거짓"필수 즉 애드 팍 =로 ID 필드를 표시하지 않도록 수정 dataconract 해상력을 만 XML 위의 역 직렬화 ID
  2. 몇 가지 더미 값을 추가하려면 해결.

HTH ...

+0

는 응답 주셔서 감사합니다. 해결 방법 1. 즉시 작동하지 않았지만, 닫는 "personHeader"태그 바로 전에 내부 텍스트 "i1"을 제거한 후에 작동했습니다. "i1"을 z : Id 속성으로 수동으로 이동 시켰으며 이제는이를 비 직렬화합니다. – Chetan

관련 문제