webservice 可以用于分布式應用程式之間的互動,和不同程式之間的互動,概念性的東西就不說太多,下面開始創建一個簡單的webservice的例子,
一:WebService的創建開發
先新建一個專案


繼續為專案添加本文的主角,選擇Web服務,點擊添加,一個簡單的webservice就創建完成了,

接下來撰寫兩個簡單的方法,

PS:如果方法需要通過webservice的地址進行呼叫,那就必須在方法上面打上 [WebMethod] 的特性標簽,否則是無法通過webservice訪問到的,
Description 是方法的描述,

然后運行一下,就可以看到上圖的方法了,訪問 webservice 就可以根據地址欄里的地址進行呼叫 webservice 的方法了,
但是這樣如何讓其他應用程式通過網路進行訪問呢?那就需要部署到服務器了,
二:將WebService服務部署到服務器
下面的演示我是部署在本機的,不過服務器部署也是一樣的,網站部署需要用到 IIS,而我這里是已經開啟的,如果沒有開啟的話,可以通過 開始選單 > 控制面板 > 程式 > 啟用或關閉 windows 功能 開啟,具體的可以網上搜索一下,這里就不做過多的介紹,
開啟 IIS 之后,先把剛才的 webservice 發布之后,然后打開 IIS 管理器,

選擇自定義,然后輸入組態檔名稱,然后點擊下一步,

然后選擇發布的方式和發布的路徑,然后點擊下一步,

設定不用改,繼續下一步,然后點擊發布,

這樣就發布完成了,現在打開 IIS 管理器,然后選擇網站,點擊添加網站,


輸入網站的名稱、IP地址(本機可以不輸入IP地址)和埠,選擇檔案的路徑,然后點擊確定,網站就創建完成了,
當然,并不一定就立馬可以使用了,這之中會出現很多的錯誤,下面是我碰到的一些錯誤和一些解決方法,

這個錯誤是因為檔案的訪問權限不夠的問題,解決方法就是點擊編輯權限,

然后選擇安全欄,點擊編輯,


然后點擊添加一個用戶,把權限設定為允許,或者使用下面這種方法:
選擇網站,然后選中身份驗證,點擊基本設定,

選擇連接為,


然后選擇特定用戶,點擊設定,輸入本機的用戶名和密碼,點擊確定就可以了,然后可以點擊測驗設定看看效果,

這個錯誤的原因是在安裝Framework v4.0之后,再啟用IIS,導致Framework沒有完全安裝,
解決方法就是:開始選單 > 命令提示符(管理員),然后輸入并執行 %windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i 命令列,

這個問題的是因為,應用程式池設定的原因,開始新建網站的時候沒有選擇應用程式池,默認為v2.0的版本,不支持 Framework 4.5,

解決方法就是選擇應用程式池,然后改為v4.0的版本,管道模式設定為集成,

這個錯誤的原因是由于系統目錄下的Temp目錄無相應的權限所致,
解決方法就是進入 C盤 windows 目錄下的 Temp 目錄,右鍵屬性 > 安全欄 > 編輯 > IIS_IUSRS 的權限設定為完全控制,


這個錯誤的原因是因為沒有配置網站的默認檔案,
解決方法就是選中網站,點擊默認檔案,然后添加一個默認的頁面,即應用程式的起始頁面,


然后,處理了眾多問題之后,總算是部署成功了,

三:呼叫WebService
接下來,就來個簡單的 webservice 的呼叫示例,
首先建一個最簡單的應用程式,再添加參考


點擊高級,然后在彈出來的頁面點擊 添加web參考,


在URL欄輸入部署的網站地址,然后點擊轉到,就可以看到下面的方法內容了,然后輸入web參考名稱,點擊添加參考,
參考添加完成,下面就開始呼叫在表單按鈕點擊事件中呼叫webservice,
private void btnOk_Click(object sender, EventArgs e) { string name=txt1.Text; WebReference.WebService1 wb = new WebReference.WebService1(); string str = wb.SelectName(name); lblJg.Text = str; }
呼叫結果:輸入shuke 回傳舒克

四:注意事項
當不同兩臺機之間呼叫時,需要在組態檔<system.web>中加入這段代碼:
<webServices>
<protocols>
<add name="HttpSoap"/>
<add name="HttpPost"/>
<add name="HttpGet"/>
<add name="Documentation"/>
</protocols>
</webServices>
整個程序就結束了,當然呼叫的形式有多種,這里我只用了這個最簡單的,其余的大家可以一起研究,
這個webservice的建立和呼叫測驗我都是在本機上,如果有必要可以在分布式環境上來測驗,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/21.html
標籤:C#
