【问题标题】:Web Service Serializing complex objectsWeb服务序列化复杂对象
【发布时间】:2012-05-06 11:30:33
【问题描述】:

我有一个带有Class1 的网络服务。 Class1 有一个属性的图像列表

[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;
        }
    }
}

MyList 上进行获取时,会发生以下错误。有什么想法吗?

System.Web.Services.Protocols.SoapException:服务器无法 处理请求。 ---> System.InvalidOperationException:有一个 生成 XML 文档时出错。 ---> System.InvalidOperationException:类型 System.Drawing.Bitmap 是 没想到。使用 XmlInclude 或 SoapInclude 属性来指定 静态未知的类型。在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write4_Image(字符串 n, String ns, Image o, Boolean isNullable, Boolean needType) at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write5_Class1(字符串 n, String ns, Class1 o, Boolean isNullable, Boolean needType) at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write6_HelloWorldResponse(Object[] p) 在 Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer1.Serialize(对象 objectToSerialize,XmlSerializationWriter 作家)在 System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, 对象 o、XmlSerializerNamespaces 命名空间、字符串 encodingStyle、 String id) --- 内部异常堆栈跟踪结束 --- at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, 对象 o、XmlSerializerNamespaces 命名空间、字符串 encodingStyle、 字符串 id) 在 System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, 对象 o、XmlSerializerNamespaces 命名空间、字符串 encodingStyle)
在 System.Web.Services.Protocols.SoapServerProtocol.WriteReturns(Object[] returnValues,流输出流)在 System.Web.Services.Protocols.WebServiceHandler.WriteReturns(Object[] 返回值)在 System.Web.Services.Protocols.WebServiceHandler.Invoke() --- 结束 内部异常堆栈跟踪---

【问题讨论】:

    标签: c# web-services serialization web known-types


    【解决方案1】:

    我在以下网址找到了答案。我需要 [XmlInclude] 标签而不是 [SoapInclude] 标签

    Troubleshooting Common Problems with the XmlSerializer

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

    【讨论】:

      【解决方案2】:

      根据documentation中的例子,我相信你必须在实际的SOAP WebService方法上应用[SoapInclude]属性:

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

      【讨论】:

      • @mellamokb....我找到了答案并发布了....看看。我有 [SoapInclude] 而不是 [XmlInclude]
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多