2009-10-09 2 views
3

우리는 개발 환경과 테스트 환경에 배포 할 때 완벽하게 작동하지만 프로덕션 환경에서는 넘어지는 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 유형의 필드가 있습니다. 따라서 평범하고 분명히 직렬화가 불가능합니다.

누구에게이 문제의 원인이 될 수있는 아이디어가 있습니까?

+3

언제든지 프로덕션 .NET 3.5이고 DEV/TEST 3.5 SP1입니까? –

+1

아, 그렇다. 그런 단순한 유형이 SP1 이전에 직렬화되지 않은 것으로 간주되는 이유는 무엇입니까? –

+1

이것은 대답 인 것 같습니다 : DataContract Serializer는 유형에서 [DataContract] 및 [DataMember]에 대한 ned를 완화/제거하여보다 쉽게 ​​가져옵니다. POCO (Plain Ol 'CLR Object) 시간입니다. (http://www.hanselman.com/blog/HiddenGemsNotTheSameOld35SP1Post.aspx에서) –

답변

3

Marc_s가 실제로 댓글에 답변했습니다.

하지만 데이터 계약자 serializer의 변경 사항이 원인 인 것처럼 보입니다.

http://www.hanselman.com/blog/HiddenGemsNotTheSameOld35SP1Post.aspx

+0

정확함, 감사합니다. marc_s. 추가 정보에 대해 Shiraz에게 감사드립니다. 프로덕션을 .NET 3.5 SP1로 업그레이드하는 중입니다.이를 수정했는지 여부가 다시보고됩니다. –

+0

.NET 3.5 SP1로 업그레이드 한 후 예상대로 작동합니다. 실제 원인은 누락 된 [DataContract] 및 [DataMember] 특성이었고, 이는 foosnazzy에서 언급 한대로 추가해야합니다. –

0

앱 풀을 재활용 해 보셨습니까? 명시 적으로 DataContracts를 표시하는 것이 가장 좋은 방법이므로 해당 속성도 적용 할 수 있습니다. vdir http 활성화가 잘못 구성되었을 수 있습니까?

+0

재활용, iisreset, 서버 재부팅. 꽤 많이 내 기지를 덮었습니다. 아마도 프로덕션 환경에서 .NET 3.5는 isntalled이며, dev 및 테스트에서는 .NET 3.5 SP1 (위 참조)입니다. –

0

이 가능한 이유가 될 수 있습니다. 아래에서 언급 한 것과 같은 이유로이 오류가 발생했습니다

Memory gates checking failed because the free memory (258187264 bytes) is less than 5% of total memory. As a result, the service will not be available for incoming requests. To resolve this, either reduce the load on the machine or adjust the value of minFreeMemoryPercentageToActivateService on the serviceHostingEnvironment config element.