우리는 개발 환경과 테스트 환경에 배포 할 때 완벽하게 작동하지만 프로덕션 환경에서는 넘어지는 WCF 서비스를 보유하고 있습니다.WCF ServiceActivationException 혼란
[ServiceActivationException : 서비스로 이동하려고하면
, 다음의 예외가 발생 (내부 예외 타입 InvalidDataContractException이다) 때문에 활성화 될 수없는 서비스 '/IL.Party.WS/Party.svc' 컴파일하는 동안 예외가 발생합니다. 예외 메시지 : 'IL.Party.MS.Person'유형을 직렬화 할 수 없습니다. DataContractAttribute 특성으로 표시하고 DataMemberAttribute 특성을 사용하여 직렬화하려는 모든 멤버를 표시하는 것을 고려하십시오.]
여기서 무슨 일이 일어나는지 알 수 없습니다. 세 가지 환경 모두 Windows Server 2003, IIS6 및 .NET 3.5입니다. 서비스가 실패한 서버에서 임시 삭제와 같은 작업을 수행했습니다. ASP.NET 파일을 강제로 재 컴파일합니다. 동일한 코드가 세 가지 환경 모두에 배포됩니다. 'IL.Party.MS.Person'이 직렬화 가능하지 않으면이 세 가지 환경 모두에서이 오류가 발생할 것으로 예상됩니다. Person 유형에는 string, int, DateTime 및 decimal 유형의 필드가 있습니다. 따라서 평범하고 분명히 직렬화가 불가능합니다.
누구에게이 문제의 원인이 될 수있는 아이디어가 있습니까?
언제든지 프로덕션 .NET 3.5이고 DEV/TEST 3.5 SP1입니까? –
아, 그렇다. 그런 단순한 유형이 SP1 이전에 직렬화되지 않은 것으로 간주되는 이유는 무엇입니까? –
이것은 대답 인 것 같습니다 : DataContract Serializer는 유형에서 [DataContract] 및 [DataMember]에 대한 ned를 완화/제거하여보다 쉽게 가져옵니다. POCO (Plain Ol 'CLR Object) 시간입니다. (http://www.hanselman.com/blog/HiddenGemsNotTheSameOld35SP1Post.aspx에서) –