標籤:控制台 com binding world hello sof eth 應用程式 成功
轉自:http://blog.csdn.net/u012995964/article/details/54562111
本文記錄帶有SoapHeader驗證的WebServices服務建立、部署及C#中的靜態調用方法,基於 Windows8.1、Visual Studio 2013、IIS8 環境實現。
WebServices服務建立
Visual Studio 2013中建立WebServices
- 建立一個空的
ASP.NET Web 應用程式 :
- 建立 WebService 服務的程式(asmx格式)檔案:
首次右鍵“添加”時,看不到圖中所示的 “Web 服務(ASMX)” ,可以點擊“建立項(W)”來實現建立:
- 到此 WebService 服務建立完成,可以看到如下基礎代碼:
- 快速鍵
F5 或 ctrl + F5 運行程式如下:
此時可以點擊頁面的 Hello World 跳轉到基於 HTTP POST 協議的調用測試頁面 :
點擊“調用”即可以在新的頁面看到返回的結果:
添加SoapHeader驗證建立基礎的WebService服務後,根據需要,有時服務會需要許可權來保證安全,這裡通過添加SoapHeader驗證(即Soap的頭資訊驗證)來實現。
1. 首先需要我們自己去實現一個有身分識別驗證資訊的類,這個類繼承於 System.Web.Services.Protocols.SoapHeader , 代碼如下:
/// <summary> /// 自訂MySoapHeader類 /// </summary> public class MySoapHeader : System.Web.Services.Protocols.SoapHeader { private string userName; private string passWord; public MySoapHeader() { } public MySoapHeader(string userName, string passWord) { this.userName = userName; this.passWord = passWord; } public string UserName { set { userName = value; } get { return userName; } } public string PassWord { set { passWord = value; } get { return passWord; } } }
2.修改WebService類
/// <summary> /// WebService1 的摘要說明 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // 若要允許使用 ASP.NET AJAX 從指令碼中調用此 Web 服務,請取消注釋以下行。 // [System.Web.Script.Services.ScriptService] public class WebService1 : System.Web.Services.WebService { public MySoapHeader soapHeader; [WebMethod(Description="SoapHeader驗證")] [System.Web.Services.Protocols.SoapHeader("soapHeader")] public string HelloWorld() { //簡單驗證使用者資訊 //可以通過資料庫或其他方式驗證 if ("admin".Equals(soapHeader.UserName) & "admin123".Equals(soapHeader.PassWord)) { return "使用者驗證通過!"; } else { return "對不起,您沒有存取權限!"; } } }
至此實現了SoapHeader驗證的添加,此處注意Webservice類中的方法上添加上SoapHeader特性。即上面代碼中的[System.Web.Services.Protocols.SoapHeader("soapHeader")]
此處為簡單實現,進階實現,可以參考MSDN提供的 教程文檔
WebService服務部署
WebService服務程式的發布
編寫好的web程式或者服務等,可以通過發布直接部署到伺服器。這裡沒有遠程伺服器,所以使用本地的IIS伺服器來運行WebService服務。發布方式如下:
後面兩項配置預設即可,此時點擊發布按鈕,等待控制台顯示如下提示,即表示發布成功:
此時可以在發布的目錄中看到如下檔案:
本地IIS服務部署
在本地IIS的部署可以參看前文 Windows8.1中IIS服務安裝及網站配置 中網站部署的部分。
部署後瀏覽結果如下:
WebService的調用
建立用戶端
建立控制台應用程式,用來調用測試。
添加引用
建立完項目後,需要引用WebService服務,用於調用WebService
添加完引用後,開啟“Program.cs”檔案的Main方法中輸入以下語句:
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace TestService{ class Program { static void Main(string[] args) { //建立WebService服務執行個體 MyWebServices.WebService1SoapClient service = new MyWebServices.WebService1SoapClient(); //建立自訂SoapHeader對象執行個體 MyWebServices.MySoapHeader header = new MyWebServices.MySoapHeader(); //未設定SoapHeader的服務調用 Console.WriteLine("未設定SoapHeader的服務調用:" + service.HelloWorld(header)); Console.WriteLine(); //將使用者名稱與密碼存入SoapHeader; header.UserName = "admin"; header.PassWord = "admin123"; ////設定SoapHeader的服務調用 Console.WriteLine("未設定SoapHeader的服務調用:" + service.HelloWorld(header)); Console.Read(); } }}
運行後,測試結果如下:
源碼: C#靜態調用帶有SoapHeader驗證的WebServices
參考及推薦
關於Web Services學習,可以看這裡:
- w3school 提供的系列教程
- MSDN的ASP.NET XML Web services 基礎知識
關於IIS Express和本地IIS服務的一些介紹比較,可以看這裡
C#靜態調用帶有SoapHeader驗證的WebServices