微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WebService中方法的重载

阅读目录

  一:WebService中的方法是否允许重载?

  二:为什么WebService中不支持方法的重载?

  三:如何解决WebService中方法的重载?

  一:WebService中的方法是否允许重载?

    WebService中不支持使用方法的重载,从图片我们能够得出结论

复制代码

 1    [WebMethod]
 2   public string GetName()
 3   {
 4        return "从小就犯困";
 5   }
 6 
 7   [WebMethod]
 8   public string GetName(string strValue)
 9   {
10     return strValue;
11   }

复制代码

    

  二:为什么WebService中不支持方法的重载?

    WebService中不支持方法的重载,这还得从WebService的工作机制中说起,当客户端调用一个WebService的方法时,首先要将方法名称和需要传递的参数包装成XML,也就是SOAP包,通过HTTP协议传递到服务器端,然后服务器端解析这段XML,得到被调用方法名称和传递过来的参数,进而调用WebService相应的方法方法执行完毕后,将返回结果再次包装为XML,也就是SOAP响应,发送到客户端,最后客户端解析这段XML,最终得到返回结果,关键在于服务器端解析XML时无法识别重载的方法,WebService只认方法名称,而且两个方法名称相同,服务器端不知道该调用哪个相应的方法

  三:如何解决WebService中方法的重载?

    可以通过MessageName属性消除由于多个相同的名称造成的Web服务无法识别的问题,因为MessageName属性使得Web服务能够确定唯一别名的重载方法认时候是方法本身的名称,当指定MessageName属性后,SOAP将反映MessageName的值,而不是方法名称本身,所以这就解决了WebService中不支持方法的重载

复制代码

 1   [WebServiceBinding(ConformsTo = WsiProfiles.None)]
 2   [WebMethod(MessageName="FirstMethod")]
 3   public string GetName()
 4   {
 5        return "从小就犯困";
 6   }
 7 
 8   [WebMethod(MessageName="SecordMethod")]
 9   public string GetName(string strValue)
10   {
11     return strValue;
12   }

复制代码

     

    我们现在来看这两个方法的消息名称是不就被区分开了

     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐