Webservice中如何实现方法重载(overload)以及如何传送不能序列化的对象作参数
2014-01-03 08:10
429 查看
1。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
{
...
}
2.无法序列化的对象如何作为参数传递
比如:
void TestMethod(MyObject p){
...
}
这里MyObject是一个自定义类,并且无法序列化,如果你的WebService里有这样的方法,那么在浏览asmx时,会提示“MyObject无法序列化,因为没有无参数的构架函数”之类,解决办法有二个:
(a)修改MyObject,使其序列化,但如果MyObject已经封装成程序集(dll)无法修改的话,请看第二种方法
(b)将void TestMethod(MyObject p)修改为
void TestMethod(Object t){
MyObject p = t as MyObject
...
}
即把Object做为参数传入,然后在方法内部再Cast为MyObject,虽然这要增加了额外的拆箱,封箱操作,但总比不能用要好
另外,讲几个小技巧,如果要给方法增加描述说明,让引用webService的人更容易看懂,可以在[WebMethod(MessageName = "HelloWorld1")]后再增加一个Desciption="xxx",即
[WebMethod(MessageName = "HelloWorld1", Description = "描述内容,支持Html语法哦")]
同样整个WebService也可以增加描述,在class上增加Desciption属性,即
[WebService(Namespace = "http://www.yourdomain.com/",Description="服务说明,支持html语法")]
[WebServiceBinding(ConformsTo = WsiProfiles.None)]
public class UploadService : System.Web.Services.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
{
...
}
2.无法序列化的对象如何作为参数传递
比如:
void TestMethod(MyObject p){
...
}
这里MyObject是一个自定义类,并且无法序列化,如果你的WebService里有这样的方法,那么在浏览asmx时,会提示“MyObject无法序列化,因为没有无参数的构架函数”之类,解决办法有二个:
(a)修改MyObject,使其序列化,但如果MyObject已经封装成程序集(dll)无法修改的话,请看第二种方法
(b)将void TestMethod(MyObject p)修改为
void TestMethod(Object t){
MyObject p = t as MyObject
...
}
即把Object做为参数传入,然后在方法内部再Cast为MyObject,虽然这要增加了额外的拆箱,封箱操作,但总比不能用要好
另外,讲几个小技巧,如果要给方法增加描述说明,让引用webService的人更容易看懂,可以在[WebMethod(MessageName = "HelloWorld1")]后再增加一个Desciption="xxx",即
[WebMethod(MessageName = "HelloWorld1", Description = "描述内容,支持Html语法哦")]
同样整个WebService也可以增加描述,在class上增加Desciption属性,即
[WebService(Namespace = "http://www.yourdomain.com/",Description="服务说明,支持html语法")]
[WebServiceBinding(ConformsTo = WsiProfiles.None)]
public class UploadService : System.Web.Services.WebService
{
...
}
相关文章推荐
- [c#]Webservice中如何实现方法重载(overload)以及如何传送不能序列化的对象作参数
- [c#]Webservice中如何实现方法重载(overload)以及如何传送不能序列化的对象作参数
- Webservice中如何实现方法重载(overload)以及如何传送不能序列化的对象作参数
- js中方法重载如何实现?以及函数的参数问题
- js中方法重载如何实现?以及函数的参数问题
- WebService学习之如何使用实体对象作为参数
- 【转】WPF [调用线程无法访问此对象,因为另一个线程拥有该对象。] 解决方案以及如何实现字体颜色的渐变
- AJAX JSON中日期类型DateTime格式化的序列化自定义对象以及自定义类型参数的问题处理
- servlet(三)-如何使用传参-三种转发方式、传递参数以及对象中数据的范围
- 什么是Java序列化,以及其如何实现
- servlet(三)-如何使用传参-三种转发方式、传递参数以及对象中数据的范围
- Android 访问Webservice接口,参数对象不能串行化问题解决(java.lang.RuntimeException: Cannot serialize)
- WPF [调用线程无法访问此对象,因为另一个线程拥有该对象。] 解决方案以及如何实现字体颜色的渐变
- 关于怎么解决从ajax传入的json参数注入到Controller的接收对象 以及如何在Spring Boot项目使用参数校验
- webservice不能序列化接口问题,返回值为IList或者参数为接口的解决办法。
- 什么叫序列化,如何实现序列化以及反序列化(转)
- iOS 演示 Modal Segue 的使用,包括参数如何从呈现者传递到 ModalView 以及数据如何从 ModalView 传回呈现者(利用委托对象)
- C++如何实现只能动态分配类对象,不能定义类对象
- restful接口实现跨域访问,以及get请求对象参数对象封装,post请求
- Java中,什么是实现对象序列化?如何实现对象序列化?