写在前面: 你要相信,只要你顺其自然地看完,肯定能帮到你的忙
开发环境 VS 2015 Enterpise 英文版
背景:想要调用一个WebService,肯定是因为这个WebService里面有你想要的数据或方法,你才会去调用它
调用分三种,第一种:就是我下面要具体讲的Demo,本机上的一个VS项目去调本机上另一个VS项目里的WebService(里面的方法,数据,...);
第二种:就是调Internert上的开放WebService(有收费和不收费的),等等一笔带过;
第三种:与前面两个都不同,比如说我想调用的WebService不在我本机上,别人也没有发布在Internet上,而是在别人的服务器上,别急,最后会聊;
只想知道如何调用的同学,我建议也要把第一步如何创建瞥下(即使你调用的是别人写好的WebService),但是知其然并知其所以然不是更好吗
1.创建:假设我们(在WebService里)创建一个 返回"Hello World"字符串 的方法去给别人调用,别问我为什么举这么low的Demo,往下看你就知道了
创建一个项目,用来提供WebService服务
有ASP.NET 空 Web应用程序 的同学选空的就行
这里创建一个Web服务,文件名是以asmx结尾的,等等我们想去创建给他人调用的方法,就写在这个里面哦
下面是系统默认生成的
哈哈,现在知道我为什么举这么Low的Demo了吧,我本打算写别的,不过不忘初心吧,Hello Word!
哦,对了,忘说了,有没有注意到方法上面的这个帽子呢,好吧,我自己习惯喊它帽子,只有让方法头上盖上这顶帽子,别人才可以调用该方法哦(这个虽然是系统默认生成的,但是以后自己
开发其它方法时,如果想被其他人调用的到的话,别忘记加上去哦)
2.发布 好吧,重点才开始,只想知道如何调用的同学可以认真看了,老夫先习惯性的Ctrl + Shift + B一波
右击这个asmx文件所属的项目(类库),点击Publish(发布)
给要发布的类库起个名字,这仅仅是个名字而已,并且看不见,摸不着,并不是你理解的发布后生成的文件会存在这个TheProfileToStorePublish里,这只是个不存在的名字
好吧,这不重要,我的意思只想表示,忘了这个TheProfileToStorePublish
别看下面要填的这么多,这里选择 文件系统 后 就简便很多了
点击发布后,WebService项目会编译生成文件,存在你刚才取的叫阿猫阿狗文件夹里,所以TheProfileToStorePublish不重要,阿猫阿狗才重要
点进去找到了生成后的文件们,还有那个最重要的acmx文件,这个文件最终都会出场的哦,别急 往下看
2.5 到这你可能觉得发布成功了,另一个VS里面的项目就可以调用了,但是你想想,怎么才能让另一个VS项目里面能调用到这些文件呢
其实只要把这个发布后生成的文件部署到IIS就可以了
我习惯自己手动建应用程序池,可能大部分人都是直接新建网站,然后调用自动生成的与网站同名的应用程序池
可我就喜欢自己先建个应用程序池,然后新建网站的时候,应用程序池选择我自己建的,不要问我为什么
应用程序池建好后 再建网站
别急,还没完呢,把WebService给别人调用的原理,就是拿一个Url给别人的VS里,怎么拿这个Url呢,这也是我们要部署IIS的真正原因
Boom,是不是有人跟我一样报错了,别慌,看看错误提示的什么,我们照做就可以了
一开始就不报错的同学靠边站,你人品挺好的,这个时候我们再回头点击Url,发现出现以下页面,其中有包含我们要调用方法的asmx文件,恭喜你,发布完全结束!
3.调用
现在我们在另一个VS项目里,你想在这个VS项目里调用之前发布过的WebService
我点
我再点
注意:这个路径 必须是 网站Url后面加上/你的asmx文件(我们在第一个项目建的Web服务),不然找不到的
如果你电脑联网的话,这个地址可以调Internet上有的,比如天气预报发布的WebService的最终的Url,可以搜下拿来用
正常情况下,一个简单的WebService从创建->发布->调用算是完成了
我们再来聊聊一开始说的,第三种情况
其实,第一种并不满足实际生活中的开发,不过也不难,首先我们需要知道我们要调的那个人的asmx叫什么,里面的方法名是什么,需要传什么参数
我们F12进去看下
我们会发现 因为调用本地IIS的原因,调用的Url是写死的,我们真正调别人机器上的WebService时,可以通过WebConfig里面设置
<appsettings>
<add key="WebServiceUrl" value="xxxx">
</appsettings>
然后代码里var webServiceUrl = ConfigurationManager.AppSettings["WebServiceUrl"]
ws.Url = webServiceUrl
最终代码合到你要调用那个人的服务器上时,WebConfig里配那个人的IIS地址就行
我只能说,通过配WebConfig可能并不是个很好的方法,我自己也很少用,但SharePoint的东西放在这里又不适合,所以目前推荐可以用这种
写在最后:如果觉得有讲得不明白的地方,欢迎联系我,邮箱地址:jiyisharp@foxmail.com