.net中关于Windows窗体程序和Web网站程序调用自己的服务

时间:2022-05-23 13:13:52

在.NET Framework 4.0创建服务是中没有像3.5那样的选择新建-网站-ASP.NET Web服务模块,但在4.0中可以选择 新建-网站-ASP.NET空网站-选中项目右键添加新项-

选择Web服务,接着找到Web服务,创建服务即可

.net中关于Windows窗体程序和Web网站程序调用自己的服务

.net中关于Windows窗体程序和Web网站程序调用自己的服务

所有的名称都没更改,如果WebService.asmx的名称改了,如改成MyService.asmx,这代理类的名称也会自动更改,代理类名称就会改为MyServiceSoap

在其他程序项目引用该服务是会创建代理类,代替服务类,建立代理类对象就等于建立服务类,并可以调用其中方法

创建好后后可看到如下代码:

.net中关于Windows窗体程序和Web网站程序调用自己的服务

上图中的public class WebService{...}就是服务类,其中默认包含一个方法HelloWorld

服务创建好后就跟发布网站一样将其发布在IIS中,接着,再次打开VS2010开发工具,新建网站或Windows窗体应用程序,在界面上放入一个按钮和一个Lable,点击按钮时调用HelloWorld方法,将“Hello World”显示在Lable中,这里以Windows应用程序为例:

创建:(还没添加服务引用前的解决方案资源管理器样子)

.net中关于Windows窗体程序和Web网站程序调用自己的服务

添加自己创建的服务:右键

.net中关于Windows窗体程序和Web网站程序调用自己的服务

选择添加服务引用后出现如图所示:

.net中关于Windows窗体程序和Web网站程序调用自己的服务

地址栏里输入你的服务地址,打开你先前创建的服务项目,右键在浏览器中查看:

如图:(鼠标选中的为你的服务地址)

.net中关于Windows窗体程序和Web网站程序调用自己的服务

.net中关于Windows窗体程序和Web网站程序调用自己的服务

复制好后粘贴到添加服务引用的地址栏中,点击前往,会出现如下图所示:

.net中关于Windows窗体程序和Web网站程序调用自己的服务

命名空间可以改名也可以不改,这里我改为aa,代理类则会在命名空间aa中,点击确定后,资源管理器变成如下图所示:

.net中关于Windows窗体程序和Web网站程序调用自己的服务

可以双击app.config查看你的代理类的类名,方便我们建立代理类对象,调用服务HelloWorld方法

双击app.config,找到代理类名,如图:

.net中关于Windows窗体程序和Web网站程序调用自己的服务

一般的,我们在创建代理类实例时,aa.WebServiceSoap后面会存在Client这个单词,如果创建服务时将WebService.asmx改成MyService的话,这里name就为“MyServiceSoap”,(前面我没有更改,用的是默认的WebService.asmx)

接下来我们需要点击按钮然后在Lable 中显示“Hello World”,就是在按钮的单击事件中创建服务实例,调用HelloWorld()方法

创建服务实例时,如图所示:

.net中关于Windows窗体程序和Web网站程序调用自己的服务

选择aa.WebServiceSoapClient创建代理类对象

写好单击事件后代码如图所示,之后运行,ok

.net中关于Windows窗体程序和Web网站程序调用自己的服务