寫在前面: 你要相信,只要你順其自然地看完,肯定能幫到你的忙
開發環境 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