网上有很多关于webservice资料,但大部分都不完整,其中还要很大部分是转载的……。这个悲剧了,自己都没试过能不能用就不负责任的转载。
所以今天对webservice的新建、发布、使用最一个全面、细致的演练,如果有问题的留言,咱们共同讨论。
首先建立webservice
工具:vs2013
1、咱们新建一个web的项目:
选择空的web项目就好
单机确定
一个空的web项目建立完毕
2、在项目名称处右键添加web服务(asmx文件)
单机添加
至此我们就建好一个最简单的webservice(webservice1.asmx)
3、我们打开webcervice1.asmx文件:
咱们看到HelloWorld()方法和我们平时用到的方法上面只是多了一个[WebMethod]标识,这个标识的意思就是告诉运行环境我这个方法是可以被当做Web服务调用的。
4、发布:在项目的右键单击发布:
单击自定义,输入任意的配置名称:
发布方法选择【文件系统】
单击下一步,在目标位置中自己定义发布的路径,然后一路下一步,最后发布完成。
我们打开自己定义的发布路径看到:
在路径中有3个文件.
至此我们的webservice就建立、发布完成了。
这里有一个地方要注意:如果你的计算机上安装的.net Framwor的版本和你在建立项目时候的版本不一致,将会导致iis无法解释你的web服务。所以要在发布之前更改开发环境的.net Framwork的版本:
右键项目名称选择属性:
目标框架选择合适的版本。我这里因为自己的电脑上没有安装.net Framwork 4.5所以我 选择的目标框架是4.0的版本。
二、
发布完的web servive必须得发布到iis服务器中,外部程序才可以访问。
我的计算机系统是win 7 ,必须要安装一下iis。
打开控制面板》》程序和功能,单机【打开或关闭windows功能】
找到[Internet 信息服务]
把所有的树级全部勾选(因为只有安装完全了iis才能正常使用,在iis功能不熟悉的情况下,完全安装时最好的选择)
等一会,等安装完成后,但是操作系统的开始》》搜索程序和文件处 键入iis》》找到iis打开。
打开你的浏览器,键入:http://localhost/iisstart.htm
打开如下图所示。证明iis安装成功
2、回到打开的iis界面,在网站处右键》》新建网站
网站名称随便写,应用程序池选择.net framwork的版本和你发布的版本保持一致(上面咱们发布的版本是4.0的,忘记的童鞋可以上翻),ip键入本机IP,端口号为了不冲突咱们键入8012(默认网站是80),物理路径选择你发布web service 的路径。
新建网站完毕后,将iis切换到内容视图,右键webservice1.asmx文件,浏览器浏览。
报错了,我们看到是因为权限不足导致的访问失败。(iis会对web.config文件进行编辑,如果没有权限,iis无法编辑该文件,怎会浏览失败)。
解决问题:
找到我们发布web service项目的路径 ,对该文件夹右键属性》》安全》》编辑》》添加》》键入EVeryone
单机确定,在新添加的用户everyone选择完全控制,一路确定。
用iis重新访问webservice1.asmx
单机helloworld 返回
<string xmlns="http://tempuri.org/">Hello World</string>————————证明我的web service用iis发布成功了,别的程序可以跨平台调用我们的web service了。
三、
应用程序调用 web service
我们用vs新建一个winfrom程序,在新建项目名称处右键》》添加》》服务引用
单机添加web引用键入我们上面用IIS访问webservice1.asmx文件的url
web 引用名随意写(记住这个名字webReference),单击添加引用。
在我们winfrom 程序中进入from1的构造函数写入下面代码:
WebReference.WebService1 w=new WebReference.WebService1()‘
string str=w.HelloWorld();
打断点,运行 看看咱们定义的str变量是HelloWord.至此调用成功。