C#靜態調用帶有SoapHeader驗證的WebServices
轉自: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, stringpassWord) { 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