中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C# WebService詳解

發布時間:2020-08-11 14:32:50 來源:網絡 閱讀:550 作者:Aonaufly 欄目:編程語言

這里直接講解WebService的實現過程及其中應該注意的點,有關其應用的環境等請度娘或者google。

首先新建一個WebService服務:如圖:

C# WebService詳解

我的WebService的結構如下圖:

C# WebService詳解

好了,這里主要講解身份驗證類以及asmx服務使用身份驗證應該注意的問題:

身份驗證類:(需要繼承System.Web.Services.Protocols.SoapHeader)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services.Protocols;
namespace WebEmpty
{
    public class Authentication_WS : SoapHeader
    {
       private string userID = string.Empty;
       private string userPW = string.Empty;
       public string UserId
       {
           get { return userID; }
           set { userID = value; }
       }
       public string UserPW
       {
           get { return userPW; }
           set { userPW = value; }
       }
       public Authentication_WS()
       { }
       public Authentication_WS(string name, string password)
       {
           userID = name;
           userPW = password;
       }
       private bool IsValid(string nUserId, string nPassWord, out string nMsg)
       {
           nMsg = "";
           try
           {
               if (nUserId == "admin" && nPassWord == "admin")
               {
                   return true;
               }
               else
               {
                   nMsg = "Sorry, you have no right to call the Web service ";
                   return false;
               }
           }
           catch
           {
               nMsg = "Sorry, you have no right to call the Web service";
               return false;
           }
       }
       public bool IsValid(out string nMsg)
       {
           return IsValid(userID,userPW,out nMsg);
       }
    }
}

好了 , 加入身份驗證也是為了讓服務更加的安全。

在服務中使用身份驗證信息:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Script.Services;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Serialization;
namespace WebEmpty
{
    /// <summary>
    /// WebAiny 的摘要說明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // 若要允許使用 ASP.NET AJAX 從腳本中調用此 Web 服務,請取消注釋以下行。 
    //[System.Web.Script.Services.ScriptService]
    //[XmlInclude(typeof(DM_Introduce))]
    public class WebAiny : System.Web.Services.WebService
    {
        public Authentication_WS authentication = new Authentication_WS();//引入身份驗證類
        //[OperationContract]
        //[WebGet(UriTemplate = "Add/{x}/{y}", ResponseFormat = WebMessageFormat.Xml)] 
        [WebMethod(Description="測試WebService")]
        [ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
        [SoapHeader("authentication")]
        public string Add(int a, int b)
        {
            string msg = "";
            if (!authentication.IsValid(out msg))
            {
                return msg;
            }
            else
            {
                return (a + b).ToString();
            }
        }
        [WebMethod(Description = "測試類型")]
        [ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
        public void Type() {
            Context.Response.Write("OK - no SOAP xml Data"); 
        }
    }
}

(重點)注意點:

①Add方法使用了身份驗證功能 , 所以此方法上需要加一個特性: [SoapHeader("authentication")]   ( authentication -》 public Authentication_WS authentication = new Authentication_WS();//引入身份驗證類)


這個IIS web服務器配置,讀者可以搜百度自己解決。運行程序如下:

C# WebService詳解

我建了一個控制臺程序來測試這個WebService。

是使用WebService的功能必須要引用WebService的服務,引用方法步驟如下所示:


①,引入WebService

C# WebService詳解

C# WebService詳解

C# WebService詳解

C# WebService詳解

如上圖,我的WebService的引用名稱為WS

②看測試代碼 :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Client2WebService
{
    class Program
    {
        static void Main(string[] args)
        {
            WS.WebAiny webAiny = new WS.WebAiny();
            WS.Authentication_WS authentication = new WS.Authentication_WS();
            authentication.UserId = "admin";
            authentication.UserPW = "admin";
            webAiny.Authentication_WSValue = authentication;
            string result = webAiny.Add(1, 3);
            Console.WriteLine("1+3 = {0}", result);
            Console.ReadLine();
        }
    }
}

結果:

C# WebService詳解

需要指出的是 : Authentication_WSValue屬性是系統自動生成的(就是自己的身份驗證類后面緊加一個Value),用于設置驗證類。

我們給一個錯誤的賬號(密碼錯誤):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Client2WebService
{
    class Program
    {
        static void Main(string[] args)
        {
            WS.WebAiny webAiny = new WS.WebAiny();
            WS.Authentication_WS authentication = new WS.Authentication_WS();
            authentication.UserId = "admin";
            authentication.UserPW = "admin1";
            webAiny.Authentication_WSValue = authentication;
            string result = webAiny.Add(1, 3);
            Console.WriteLine("1+3 = {0}", result);
            Console.ReadLine();
        }
    }
}

結果為:

C# WebService詳解

這樣就能比較好的保護自己的服務了。。。。。。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

涿州市| 临海市| 同江市| 巴彦淖尔市| 东乡| 通化市| 明光市| 陇南市| 凉山| 台湾省| 萨嘎县| 略阳县| 晋江市| 新宾| 大新县| 招远市| 彰化市| 古蔺县| 普兰店市| 泾源县| 鹤峰县| 盈江县| 惠东县| 赣州市| 永州市| 余干县| 宁陵县| 梁山县| 永川市| 巫溪县| 封开县| 桃园市| 宽甸| 阳新县| 马山县| 万山特区| 华池县| 广平县| 盐边县| 嘉禾县| 定南县|