Question

I have a web service with Class1. Class1 has a List of images for a property

[Serializable]
[SoapInclude(typeof(Bitmap))]

public class Class1
{
    private static List<Image> _myList = new List<Image>();

    public List<Image> MyList
    {
        get { return _myList; }

        set
        {
            _myList = value;
        }
    }
}

When doing a get on MyList, the below error happens. Any ideas?

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 System.Drawing.Bitmap was not expected. Use the XmlInclude or SoapInclude attribute to specify types that are not known statically. at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write4_Image(String n, String ns, Image o, Boolean isNullable, Boolean needType) at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write5_Class1(String n, String ns, Class1 o, Boolean isNullable, Boolean needType) at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write6_HelloWorldResponse(Object[] p) at Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer1.Serialize(Object objectToSerialize, XmlSerializationWriter writer) at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id) --- End of inner exception stack trace --- at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id) at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle)
at System.Web.Services.Protocols.SoapServerProtocol.WriteReturns(Object[] returnValues, Stream outputStream) at System.Web.Services.Protocols.WebServiceHandler.WriteReturns(Object[] returnValues) at System.Web.Services.Protocols.WebServiceHandler.Invoke() --- End of inner exception stack trace ---

Was it helpful?

Solution

I found the answer at the below URL. I needed the [XmlInclude] tag instead of the [SoapInclude] tag

Troubleshooting Common Problems with the XmlSerializer

    [Serializable]
    [XmlInclude(typeof(Bitmap))]
    public class Class1
    {

}

OTHER TIPS

According to the example in the documentation, I believe you have to apply the [SoapInclude] attribute on the actual SOAP WebService method:

public class MyService : WebService {

    [SoapInclude(typeof(Bitmap))]
    public List<Image> GetImageList() {
        // code here
    }

}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top