C#中WebService的建立、部署和呼叫的簡單例項

時光巷尾發表於2020-08-28

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的建立和呼叫測試我都是在本機上,如果有必要可以在分散式環境上來測試。 

相關文章