之前的webservice没有设计好,现在需要在原来的ws上增加一个参数,可是原有的ws已经有客户在用,没有缘由的不好让客户改代码,于是本来想是可不可以重载一下,然后用两个不同参数个数的webmethod来解决这个问题,结果查了一下发现,重载是没有问题的,只是在我看来,这个重载实在是有名无实的重载...........
所谓重载,就是在webmethod同名的同时,必须要由MessageName重新指定别名,而这个别名则必须必须是唯一的不能重复,一旦指定别名,原来的方法名就无效了,一切以别名为准!
如下例,原来是HelloWorld,但是如果指定别名后,一个叫HelloWorld1一个叫HelloWorld2,如果传值给 http://...xx.asmx/HelloWorld?msg=xxxx 这样是一定会报错的,因为已经没有HelloWord这个方法名了,url那里要写HelloWorld2才行...
于是这个所谓的重载方法对我来说就完全是有名无实了嘛。。。orz
那我直接改方法名好了,还做什么费老大劲整重载哦!- =
可能是我比较笨,实在看不出这种重载到底有什么意义存在。。。囧
Webservice中的方法重载问题
(1)在要重载的WebMethod上打个MessageName标签
比如:
[WebMethod(MessageName = "HelloWorld1")]
public string HelloWorld(){
return "HelloWorld";
}
[WebMethod(MessageName = "HelloWorld2")]
public string HelloWorld(string msg){
return msg + "HelloWorld";
}
(2)此外还要在class上修改WebServiceBinding特性,如下:
[WebServiceBinding(ConformsTo = WsiProfiles.None)]
public class UploadService : System.Web.Services.WebService
{
...
}