WebService中的方法是否允许重载
来源:互联网 发布:杭州市城市规划院 知乎 编辑:程序博客网 时间:2024/06/05 00:39
一:WebService中的方法是否允许重载?
例如:
[WebMethod]
public string GetName()
{
return "从小就犯困";
}
[WebMethod]
public string GetName(string strValue)
{
return strValue;
}
会报错。
二:为什么WebService中不支持方法的重载?
WebService中不支持方法的重载,这还得从WebService的工作机制中说起,当客户端调用一个WebService的方法时,首先要将方法名称和需要传递的参数包装成XML,也就是SOAP包,通过HTTP协议传递到服务器端,然后服务器端解析这段XML,得到被调用的方法名称和传递过来的参数,进而调用WebService相应的方法,方法执行完毕后,将返回结果再次包装为XML,也就是SOAP响应,发送到客户端,最后客户端解析这段XML,最终得到返回结果,关键在于服务器端解析XML时无法识别重载的方法,WebService只认方法的名称,而且两个方法的名称相同,服务器端不知道该调用哪个相应的方法
三:如何解决WebService中方法的重载?
(1)将类的WebServiceBinding属性中ConformsTo指定为WsiProfiles.None
(2)可以通过MessageName属性消除由于多个相同的名称造成的Web服务无法识别的问题,因为MessageName属性使得Web服务能够确定唯一别名的重载方法,默认时候是方法本身的名称,当指定MessageName属性后,SOAP将反映MessageName的值,而不是方法名称本身,所以这就解决了WebService中不支持方法的重载
代码1:[WebServiceBinding(ConformsTo = WsiProfiles.None)]
代码2:[WebMethod(MessageName="FirstMethod")]
public string GetName()
{
return "从小就犯困";
}
[WebMethod(MessageName="SecondMethod")]
public string GetName(string strValue)
{
return strValue;
}
四、webservice如何直接用DataSet、DataTable、DataRow作为返回类型?
需要在Web.config文件添加序列化转换器的属性,示例代码:
- <system.web.extensions>
- <scripting>
- <webServices>
- <jsonSerialization>
- <converters>
- <add name="DataSetConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataSetConverter, Microsoft.Web.Preview"/>
- <add name="DataRowConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataRowConverter, Microsoft.Web.Preview"/>
- <add name="DataTableConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataTableConverter, Microsoft.Web.Preview"/>
- </converters>
- </jsonSerialization>
- </webServices>
- </scripting>
- </system.web.extensions>
- WebService中的方法是否允许重载
- WebService中的方法是否允许重载
- Webservice 方法重载 (多此一举?)
- webService方法重载的问题
- webservice的方法重载问题
- webservice的方法重载问题
- WebService中方法的重载
- WebService中方法的重载
- WebService中方法的重载
- VB6是否支持方法重载
- java中的方法重载
- JavaScript中的方法重载
- OC 中的方法重载?
- JavaScript中的方法重载
- java中的方法重载
- JavaScript中的方法重载
- java中的重载方法
- Python中的重载方法
- 设计模式中遵循的原则:单一职责、开发-封闭、依赖倒转
- poj1012 约瑟夫
- 单件模式(Singleton Pattern)
- 建造者模式(Builder Pattern)
- 适配器模式(Adapter Pattern)
- WebService中的方法是否允许重载
- Web Service简介
- A Perfect Windows Defender Uninstall Guide
- word29_1
- word_29_2
- word30
- Objective-C 对 URL 进行 URLEncode 编码
- OSI网络协议
- poj 3281 Dining