C#靜態調用帶有SoapHeader驗證的WebServices

來源:互聯網
上載者:User

標籤:控制台   com   binding   world   hello   sof   eth   應用程式   成功   

 

轉自:http://blog.csdn.net/u012995964/article/details/54562111

本文記錄帶有SoapHeader驗證的WebServices服務建立、部署及C#中的靜態調用方法,基於 Windows8.1Visual Studio 2013IIS8 環境實現。

WebServices服務建立 Visual Studio 2013中建立WebServices
  1. 建立一個空的 ASP.NET Web 應用程式 :
  2. 建立 WebService 服務的程式(asmx格式)檔案:
  3. 首次右鍵“添加”時,看不到圖中所示的 “Web 服務(ASMX)” ,可以點擊“建立項(W)”來實現建立:

  4.  


    1. 到此 WebService 服務建立完成,可以看到如下基礎代碼:

    1. 快速鍵 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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.