You may be missing XmlRoot attribute on your Person Action class. XmlInclude may also be unnecessary.

Edited to add:

I use (in my ASMX/.NET 2.0 Web services) XmlRoot and don't use XmlInclude.

I noticed one strange thing: your properties are get-only. I believe the convention is to make data-holding properties in serializable classes get-set.

one more thing you can try is to take your service's WSDL, run it through WSDL utility, see how wsdl.exe generates your serializable classes and see the differences - this is a .NET 2.0/ASMX-specific advice, of course.

Thank you very much for your fast response... I could see that after I changed all the private fields into public, then it worked... But why the public properties are not serialized if they reference private fields?
–
LearnerNov 11 '09 at 14:22