创建一个示例和WebMethod特性解析
系列文章导航:
可是当你从新生成的时候,会发现不会在报错了,但是在浏览器打开时,却会出现下面的问题。
后来看书发现了这个问题的原因在于:
由于默认WebServiceBinding特性遵循WS-1 BP V1.1,如果两个方法处于相同的数据绑定,那么该规范不允许方法的重载(尽管使用了MessageName属性)可以做两种选择:
(1)重命名方法,当然用这种方法最好是客户端没有链接到Web服务。
(2)创建一个新的绑定来代特重载方法
做法如下:
1)为类添加新的属性(文件的摘要下面),代码如下:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1, Name = "
OverloadedGetCollege",EmitConformanceClaims=true)]
[ToolboxItem(false)]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1, Name = "
OverloadedGetCollege",EmitConformanceClaims=true)]
[ToolboxItem(false)]
多添加了这个两个属性:Name = "OverloadedGetCollege",EmitConformanceClaims=true
2)在任意一个GetCollege()方法上部添加SoapDocumentMethod特性:
[SoapDocumentMethod(Binding="OverloadedGetCollege")]
[WebMethod(Description = "根据学号获得学生的学院", MessageName = "GetCollegeStuNum")]
public string GetCollege(string strStuNum)
3)重新生成,就成功了。效果如下:
想了解这样的好处,点击如上图的“服务说明”,就可以看到WSDL的变化,我也就不多说了!