使用XmlInclude解决WebService调用时无法识别子类的异常

一、定义抽象类及子类,WebMethod实际返回子类参数

  //使用XmlInclude解决WebService调用时无法识别子类的异常
    [System.Xml.Serialization.XmlInclude(typeof(WageEmploeyee)), System.Xml.Serialization.XmlInclude(typeof(Boss))]
    public abstract class EmployeeData
    {
        //Required by XmlSerializer
        public EmployeeData() { }

        public string Name { get; set; }

        public string SSN { get; set; }

        public abstract double ComputerPay();
    }

    public class WageEmploeyee : EmployeeData
    {
        public double Wage { get; set; }

        public double Hours { get; set; }

        public override double ComputerPay()
        {
            return this.Wage * this.Hours;
        }
    }

    public class Boss : EmployeeData
    {
        public double Salary { get; set; }

        public override double ComputerPay()
        {
            return this.Salary;
        }
    }

2、WebMethod方法(根据传入的参数实例化不同的子类)

  public class WebService1 : System.Web.Services.WebService
    {

        [WebMethod]
        public EmployeeData GetEmployee(int id)
        {
            if (id == 1)
            {
                return new Boss();
            }

            return new WageEmploeyee();
        }
    }
时间: 2024-12-16 11:53:04

使用XmlInclude解决WebService调用时无法识别子类的异常的相关文章

解决WCF调用时出现错误:“创建MTOM消息读取器时出错”

如题,查询一个数据集, 存储过程返回如:select * from B 中间层定义  public DataSet GetTable(string 查询条件); 客户端定义  DataSet ds = wcfClient.GetTable("") 以前一直正常着,查询也很快速,这两天不知修改到哪了,所有的查询如果返回记录较大时(100条左右),客户端就会出现服务端返回的异常错误"创建MTOM消息读取器时出错" 客户端 app.config 配置如下 <syst

如何添加WebService调用时的用户认证

场景: 当把发布好的WebService地址或WSDL提供给调用方时,需要对方先进行身份的认证通过后才允许接口的进步访问.而不是公开的谁都可以调用. 解决: 1.在IIS中设置对应网站的目录访问权限.禁止匿名访问,开户Windows认证. 2.新建一用户,禁掉用户的远程桌面功能. 注:不要将实现此功能的思路往代码实现上做,那就麻烦了.

Web Service 或 WCF调用时读取 XML 数据时,超出最大字符串内容长度配额(8192)解决方法

1.调用服务时服务 当我们使用 Web Service 或 WCF 服务时,常把读取的数据转化为string类型(xml格式),当数据量达到一 定数量时,会出现以下异常: 错误:格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://tempuri.org/ (命名空间)进行反序列化时出错: InnerException 消息是“反序列化对象异常,读取 XML 数据时,超出最大字符串内容长度配额 (8192).通过更改在创建 XML 读取器时所使用的 XmlDictionaryRea

调用具体webservice方法时时报错误:请求因 HTTP 状态 503 失败: Service Temporarily Unavailable

添加web引用会在相应项目的app.cofig文件中产生如下代码: <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >            <section n

C# ASP.NET Webservice调用外部exe无效的解决方法

最近用asp.net做webservice,其中有个功能是调用执行外部的exe(类似cmd中执行),但执行Process.Start之后就没有结果,同样代码在winform下正常,折腾两天终于找到解决方法 本文参考了以下网页,十分感谢 http://bbs.csdn.net/topics/300053869 http://blog.163.com/[email protected]/blog/static/15737970200862331842368/ 环境:win7 sp1 64位 以及II

解决android调用IIS Express中的WCF服务时,出现错误400问题

IIS Express仅支持localhost主机名地址访问. 找到IIS Express Config文件下的 applicationhost.confi   修改配置 再来调试android应用,发下已经成功调用 解决android调用IIS Express中的WCF服务时,出现错误400问题,布布扣,bubuko.com

webservice调用服务端数据时给soapenv:Envelope 添加自定义的命名空间

最近做第三方接口,服务端需要 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://***.com/webservices" xmlns:cus="http://***/CustomUI">   <soapenv:Header>      <web:SessionType>***

通过freemarker出word的技术解决方案_通过点击一个按钮临时实现生成一个word,解决出word时中文文件名乱码问题,解决打开出word时打开的word出现问题的问题,出图片,解决动态列表

 通过freemarker制作word比较简单 步骤:制作word模板.制作方式是:将模板word保存成为xml----在xml的word模板中添加相应的标记----将xml的word文件的后缀名改成ftl文件 详细步骤如下: 模板制作(将要动态显示的数据打上标记,这个标记是freemarker中的EL标记,要注意的是,要控制值为空的情况,下面${(site.wzmc)?default("")}标识当网站名称为空的时候显示空值,如果这里如果不做控制,在实际项目中会显示错误!) 另外

Webservice调用服务端 Unmarshalling Error: unexpected element (Xxx). Expected elements are Xxx

使用Axis2调用CXF服务端Webservice方法时: 报错:Unmarshalling Error: unexpected element (uri:"http://ejb.fss.keyman.com", local:"xmldata"). Expected elements are <{}arg0> 详细信息如下: org.apache.axis2.AxisFault: Unmarshalling Error: unexpected eleme