I am getting an error when trying to XML serialize an object
System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.InvalidOperationException: There was an error generating the XML document. ---> System.InvalidOperationException: The type ProfileChulbul was not expected. Use the XmlInclude or SoapInclude attribute to specify types that are not known statically.
at System.Xml.Serialization.XmlSerializationWriter.WriteTypedPrimitive(String name, String ns, Object o, Boolean xsiType)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterProfileDefinitionExp开发者_Python百科ortHolder.Write1_Object(String n, String ns, Object o, Boolean isNullable, Boolean needType)
if you see 'ProfileChulbul' is an object, I am trying to serialize
This happens when the type you're serializing has a property of a type that is not statically known to the serializer instance. For example, if the type ProfileChulbul
has a base type, which is how it is referenced from what you're serializing, the serializer won't know how to work with it.
You have a couple options for resolving this problem:
Add the
[XmlInclude(typeof(ProfileChulbul))]
attribute (and additional attributes for any other types that will be used) toProfileChulbul
's base classModify the class you use for serialization to use generics instead of Object
Pass
typeof(ProfileChulbul)
(and any other types that will be used) into the serializer constructor at runtime, like so:var knownTypes = new Type[] { typeof(ProfileChulbul), typeof(ProfileSomethingElse) };
var serializer = new XmlSerializer(typeof(TheSerializableType), knownTypes);
Based on the part of the stacktrace "Use the XmlInclude or SoapInclude attribute to specify types that are not known statically", I would bet you are trying to serialize an interface or collection of interfaces? Xml Serialization does not allow this, try marking the interface with the XmlInclude attributes.
精彩评论