今天有人提出一问题,为什么web service的构造函数不能够传递参数进去呢?即使在代码里面重写了带参数的构造函数也无用。为什么呢?
仔细分析webervice的机制就能发现其实这个是必须的:
在.net当中webservice客户端只是在本地生成了一个代理类,这个代理类封装并维护与服务器端的通信。当你在本地创建一个webservice类实例的时候,创建的其实是本地的代理类的实例,这个时候并没有跟服务器端进行通信,无法将参数传送到服务器端,并且只有你在真正调用web service方法的时候,才与服务器端进行了通信。
测试验证结果:
编写一个客户端和服务器端,将断点设置在客户端创建服务实例的地方,启用fildder,跟踪http,你可以发现,当执行完创建webservice实例的时候,fildder没有跟踪到通信,当代码运行到调用服务器端方法的时候,可以发现已经发送了一个soap请求过去了,并有xml的响应回来。结论:在.net中,当在本地创建web service实例的时候是没有与服务器端进行通信的,也就没有办法传递参数给服务器端,只有当真正调用webservice方法的时候才与服务器端进行通信,所以webservice是无法使用带参数的构造函数的。
不过有个变通的方法,那就是用一个web方法执行你想传递参数的代码就可以,也就是一个假的带参数构造函数。
posted on 2007-07-18 10:22  silverlightfans  阅读(1592)  评论(1编辑  收藏  举报