问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

为什么web service不支持同名不同参数的方法?

发布网友 发布时间:2022-05-02 08:32

我来回答

1个回答

热心网友 时间:2023-10-13 23:23

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 方法,则应为新方法指定不同的消息名称,但应原样保留初始消息名称,以确保与现有客户端兼容。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
冠状病毒酒精消毒怎么使用 袁咏仪主演的真爱之百万新娘哪个网站可以看 ...方便的话告诉我结局怎么样。陈玉是不是死了 冉冉东升可以组什么句子 求我姓冉的专属句子 弹弹堂高手之路全部过完给多少强化石 百度弹弹堂2里面的《高手之路高级高抛打法(高级)》《高手之路高级高差训 ... 弹弹堂工厂3怎么打 弹弹堂高手之路的任务怎么触发的 腹肌练习计划 Java调用Webservice数组参数传递有问题 调用webservice时怎么向webservice接口传参数 .net webservice方法参数问题 WebService一般是如何传递参数以及返回值的? webservice接口的参数应该如何定义 如何修改 webservice里面的参数 经济合作联社签订合同需不需要通过村民代表大会或村民大会决定? 工伤有绩效工资吗 农村信用社办理普惠卡查征信吗 农村信用社可以办征信吗 上了银行征信可以在农村信用社贷款吗? 微博关注别人时发的私信怎么设置? 就是我一关注他时,他的私信立马就过来了… 微博一关注别人,就会发来私信,这个怎么弄啊。 国寿福禄两全保险分红型 国寿福禄双喜两全保险分红型怎么理赔 国寿福禄双喜两全保险分红型保重大疾病吗 国寿福禄鑫尊两全保险分红型条款 国寿福禄两全保险分红型条款 gentle monster墨镜中Absente与Didi D 的区别在哪里? 问:国家奖学金和助学金的区别? 如何在调用WebService方法时,传递对象数组参数 webservice 可以传递哪些类型的参数 web service 参数 限制字符长度? 调用webservice接口参数可以传入实体类吗 webservice接口怎么将XML作为参数传递 怎么测试webservice传参数 波浪理论相较于道氏理论的优势是什么? 怎么看道氏理论和波浪理论 道氏理论与波浪理论有什么异同? 波浪理论、江恩理论、道氏理论都是what?急、急 江恩理论与道氏理论,波浪理论有什么不同 股市成交量怎么算 股票中的成交量是怎样计算的 请问怎么算上证A股的每日总成交金额和各股一日成交金额? A股的成交量是如何计算的,单位是元还是手? 中国A股的成交量是单边计算还是双边计算?? 三年级下册三新一点通 四年级上册三新一点通 四年级上册语文三新一点通第六单元内容是什么? 巜三新一点通》上的万籁俱寂是什么解释