WebService生成XML文档时出错。不应是类型XXXX。使用XmlInclude或SoapInclude属性静态指定非已知的类型。
2009-12-18 11:20
991 查看
情况是这样的有自定义的3个类,House、SaleHouse、RentHouse。SaleHouse和RentHouse是House类的子类。在WebService中有一个方法是返回House类。
1 [WebMethod]
2 public House Get(int houseId)
3 {
4 return House.Get(houseId);
5 }
调试报错如下:
在网上查了一下资料,说是要使用属性XmlIncludeAttribute。然后将[XmlInclude(typeof(House))]加到House类和WebService中。还是报上述的错误。加[Serializable]也不管用。
又在MSDN上查找XmlIncludeAttribute的定义如下:允许 XmlSerializer 在它序列化或反序列化对象时识别类型。所以我想是因为方法返回的类型其实是House类的子类,XmlSerializer在序列化时只能识别父类,而不能识别子类,所以导致序列化的错误。所以我将[XmlInclude(typeof(SaleHouse))]和[XmlInclude(typeof(RentHouse))]同时加到WebService中,问题解决。
[XmlInclude(typeof(SaleHouse))]
[XmlInclude(typeof(RentHouse))]
public class HouseService : System.Web.Services.WebService
1 [WebMethod]
2 public House Get(int houseId)
3 {
4 return House.Get(houseId);
5 }
调试报错如下:
System.InvalidOperationException: 生成 XML 文档时出错。 ---> System.InvalidOperationException: 不应是类型 YajukeLib.Housing.SaleHouse。 使用 XmlInclude 或 SoapInclude 属性静态指定非已知的类型。
在网上查了一下资料,说是要使用属性XmlIncludeAttribute。然后将[XmlInclude(typeof(House))]加到House类和WebService中。还是报上述的错误。加[Serializable]也不管用。
又在MSDN上查找XmlIncludeAttribute的定义如下:允许 XmlSerializer 在它序列化或反序列化对象时识别类型。所以我想是因为方法返回的类型其实是House类的子类,XmlSerializer在序列化时只能识别父类,而不能识别子类,所以导致序列化的错误。所以我将[XmlInclude(typeof(SaleHouse))]和[XmlInclude(typeof(RentHouse))]同时加到WebService中,问题解决。
[XmlInclude(typeof(SaleHouse))]
[XmlInclude(typeof(RentHouse))]
public class HouseService : System.Web.Services.WebService
相关文章推荐
- WebService生成XML文档时出错。不应是类型XXXX。使用XmlInclude或SoapInclude属性静态指定非已知的类型。
- WebService生成XML文档时出错。不应是类型XXXX。使用XmlInclude或SoapInclude属性静态指定非已知的类型。
- 生成 XML 文档时出错;不应是类型XXXX;使用 XmlInclude 或 SoapInclude 属性静态指定非已知的类型;
- 运行webService错误:使用 XmlInclude 或 SoapInclude 属性静态指定非已知的类型
- 使用 XmlInclude 或 SoapInclude 特性静态指定非已知的类型。解决方案一例
- webservice中参数类型为datatable,报错“生成 XML 文档时出错”
- 演示使用DOM技术如何根据指定XML,进行相应的修改然后生成新的XML文档
- 使用DTD文档对 xml 1 作业中的xml文档进行约束,其中河北省只能依次包含石家庄市、张家口市、保定市这三个市,保定市可以有多个或者1个,给保定市定义属性编号为ID类型,必须有;属性name为字符
- System.InvalidOperationException: 生成 XML 文档时出错 这样的错误 序列化类型 xxx 的对象时检测到循环引用
- 尝试向 URI“ ”发出请求时出错。这可能是由于试图以跨域方式访问服务而又没有正确的跨域策略,或策略不适用于 SOAP 服务...。出现此错误也可能是由于使用的是 Web 服务代理中的内部类型而没有使用 InternalsVisibleToAttribute 属性。
- 使用DOM生成XML的文件属性名和属性值、节点名和节点值
- 利用替换的功能生成指定类型的属性
- 使用SAX方式生成XML文档
- 使用JDOM生成XML文档
- xml应用(1):使用xmldom在服务器端生成静态html页面
- Spring框架 注解annotation和配置文件混合使用(生成对象与属性注入) xml配置文件没有提示解决
- Eclipse设置自动生成文档所使用的@author属性
- XML反序列化出错,XML 文档(2, 2)中有错误,不应有 <configuration xmlns=''>,(已解决)
- MyBatis Generator配置文件--指定生成实体类使用实际的表列名作为实体类的属性名