加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

WebService中更新函数传入值,再调用其中函数时,函数的参数还是

发布时间:2020-12-16 23:52:55 所属栏目:安全 来源:网络整理
导读:背景: 今天写了一个webservice,又修改了一下函数的返回类型、out参数的数量(改为:public void SendData(DataSet ds,out string result,out string errMsg)),之后更新引用,再调用的使用时候发现 SendData显示为 public string SendData(DataSet ds,out
背景:
今天写了一个webservice,又修改了一下函数的返回类型、out参数的数量(改为:public void SendData(DataSet ds,out string result,out string errMsg)),之后更新引用,再调用的使用时候发现 SendData显示为 public string SendData(DataSet ds,out string errMsg)形式,不管是添加webservice还是reference service都不行,解决方案也清理过,iis也重启过,都没解决问题。
结果:
最后把函数改成public bool SendData(DataSet ds,out string errMsg)就可以了,再调用的时候,就会正确提示。可见void与多个out有一定的“矛盾”啊
==》微软在web引用的时候做了一个转换,把void类型函数的out参数自动转换为非void函数,并把这个参数变成了函数的返回值。
比如:
   
   
  1. [WebMethod] ?
  2. ????public?void?getPwdNick(int?userid,out?string?pwd,153); background-color:inherit">string?nick) ?
  3. ????{ ?
  4. ????} ?
他会在web引用后生成如下代码:

[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/getPwdNick",RequestNamespace=http://tempuri.org/==System.Web.Services.Description.SoapBindingUse.Literal,ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] ???????

?[return: System.Xml.Serialization.XmlElementAttribute(pwd")] ????????

public?string?getPwdNick(int?userid,out?string?nick)?

{ ????????????

object[] results?=?this.Invoke(getPwdNicknew?object[] {userid}); ????????????

nick?=?((string)(results[1])); ????????????

return?((0])); ?????????? ???????

?}?

这段代码在vs中点击显示所有文件,然后再web refences下面localhost-Reference.map-Reference.cs中。
例子来源

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读