1. 本来在WebService中这样写的重载方法,如下所示:

[WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public class DataObjectWebService : System.Web.Services.WebService
    {
        [WebMethod(EnableSession = true)]
        public int Add(int a, int b)
        {
            return a + b;
        }

[WebMethod(EnableSession = true)]
        public int Add(int a, int b, int c)
        {
            return a + b + c;
        }
    }

在调用WebService时,抛错:“Int32 Add(Int32, Int32, Int32) 和 Int32 Add(Int32, Int32) 同时使用消息名称“Add”。使用 WebMethod 自定义特性的 MessageName 属性为方法指定唯一的消息名称。”

2. 原来,必须在类中指示不支持1.1标准并且在方法中指定MessageName来创建唯一的别名。可以这样来解决,如下所示,这样在客户端调用时,就可以调用WebService不同的重载方法了。

[WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.None)]
    public class DataObjectWebService : System.Web.Services.WebService
    {
        [WebMethod(EnableSession = true, MessageName= "Add1")]
        public int Add(int a, int b)
        {
            return a + b;
        }

[WebMethod(EnableSession = true, MessageName= "Add2")]
        public int Add(int a, int b, int c)
        {
            return a + b + c;
        }
    }

其中,

WebServiceBindingAttribute.ConformsTo 属性:获取或设置绑定声称所符合的 Web 服务互操作性 (WSI) 规范。

WsiProfiles.None 表示 Web 服务未提出任何一致性声称。

WsiProfiles.BasicProfile1_1 表示 Web 服务声称符合“WSI 基本概要”1.1 版。

WebMethodAttribute.MessageName 属性:在传递到 XML Web services 方法和从 XML Web services 方法返回的数据中用于 XML Web services 方法的名称。默认值是 XML Web services 方法的名称。 另外,MessageName 属性可用于为方法或属性名创建别名。MessageName 属性 (Property) 最常用来唯一标识多态方法。默认情况下,MessageName 设置为 XML Web services 方法的名称。因此,如果 XML Web services 包含两个或更多同名的 XML Web services 方法,则可唯一确定各个 XML Web services 方法,处理方法是将 MessageName 设置为 XML Web services 内的唯一名称,而不用在代码中更改实际方法的名称。数据在传递到 XML Web services 时通过请求发送,而在返回时则通过响应发送。在请求和响应中,用于 XML Web services 方法的名称是其 MessageName 属性 (Property)。与 XML Web services 方法关联的消息名称必须在 XML Web services 内是唯一的。如果在客户端调用初始方法后添加同名但具有不同参数的新 XML Web services 方法,则应为新方法指定不同的消息名称,但应原样保留初始消息名称,以确保与现有客户端兼容。

如何在WebService中重载方法的更多相关文章

  1. java面试题0001-区分类中重载方法的依据是什么?

    到底是根据什么来区分类中重载的方法? A:不同的返回值类型. B:不同的参数类型. C:不同的访问权限. D:不同的参数名称. 解析: Step1.我们先在DifferentiateReload类中创 ...

  2. ajax调用webService中的方法

    页面代码 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Index.aspx. ...

  3. 【转】利用ScriptManager实现Javascript调用WebService中的方法

    原文发布时间为:2009-07-01 -- 来源于本人的百度文章 [由搬家工具导入] 前台调用后台方法,或者后台调用前台方法。ScriptManager实现 开发过程中,总想在前台直接调用后台的met ...

  4. WebService中方法的重载

    阅读目录 一:WebService中的方法是否允许重载? 二:为什么WebService中不支持方法的重载? 三:如何解决WebService中方法的重载? 一:WebService中的方法是否允许重 ...

  5. C# Webservice中如何实现方法重载--(方法名同名时出现的问题)

    本文摘抄自:http://blog.sina.com.cn/s/blog_53b720bb0100voh3.html 1.Webservice中的方法重载问题(1)在要重载的WebMethod上打个M ...

  6. WebService中方法的相关注意事项

    2014-11-14 在WebService中定义方法,有一些注意的地方: (1) 方法上面需要增加 [WebMethod] 属性,标志该方法是一个WebService方法: (2)方法的返回值可以为 ...

  7. WebService中使用自定义类的解决方法(5种)

    转自:http://www.cnblogs.com/lxinxuan/archive/2007/05/24/758317.html Demo下载:http://files.cnblogs.com/lx ...

  8. 在webservice中传递Hashtable

    webservice中不支持hashtable的数据类型,那么如何在webservice中传递hashtable呢?我们可以通过将hashtable转化为webservice中支持的数组的类型来进行传 ...

  9. flex调用webservice中的datatable结果写入datagrid

    webservice配置文件 <appSettings> <add key="sqlConDuke" value="server=10.9.34.88; ...

随机推荐

  1. 【laravel5.4】laravel5.4系列之生成_ide_helper.php文件

    在laravle中使用代码自动补全,比较方便开发,于是这边找到了相关的办法 在laravel配置完好的情况下,同时安装好了composer. 进入代码的根目录执行 composer require b ...

  2. HDUOJ----A Computer Graphics Problem

    A Computer Graphics Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (J ...

  3. Servlet乱码问题

    数据像水流一样从一个地方流向另一个地方. 文本流是特殊的二进制流. 既然提到乱码问题,那就必然是用错误的编码去解释二进制流. 在传输过程中必然都是以二进制流传输的. 所以,我们需要考虑的是: 有几个数 ...

  4. Atom 检测php错误扩展linter-php

  5. Android JSBridge的原理与实现

    在Android中.JSBridge已经不是什么新奇的事物了,各家的实现方式也略有差异. 大多数人都知道WebView存在一个漏洞.见WebView中接口隐患与手机挂马利用,尽管该漏洞已经在Andro ...

  6. 让thinkphp 支持ftp上传到远程,ftp删除

    让thinkphp真正的支持FTP上传.删除. 原创by default7#zbphp.com,如需转载请保留作者信息. /** * This is not a free software, All ...

  7. 温故而知新: 关于 js Form 方式提交的一些新认知

    这里介绍的是通过js进行异步form提交,而不是表单Form Submit提交. 提交方式主要有以下两种: 参数为字符串方式的提交,如:a=b&c=d formData方式提交, 如:new ...

  8. cocos2dx 3.x ccPositionTextureColor_vert与ccPositionTextureColor_noMVP_vert

    在cocos2dx 2.x中,如果我们要对sprite更换片段shader,写成: myProgram->initWithByteArrays(ccPositionTextureColor_ve ...

  9. jQuery $.extend()使用方法

    $.extend()使用方法总结. jQuery为开发插件提拱了两个方法,各自是: jQuery.fn.extend(object); jQuery.extend(object); jQuery.ex ...

  10. man手册查找ascii码和运算符优先级

    1.man手册可以输出ascii码表 man   ascii 2.man手册还可以输出运算符的优先级 man operator