您好,登錄后才能下訂單哦!
這里直接講解WebService的實現過程及其中應該注意的點,有關其應用的環境等請度娘或者google。
首先新建一個WebService服務:如圖:
我的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服務器配置,讀者可以搜百度自己解決。運行程序如下:
我建了一個控制臺程序來測試這個WebService。
是使用WebService的功能必須要引用WebService的服務,引用方法步驟如下所示:
①,引入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(); } } }
結果:
需要指出的是 : 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(); } } }
結果為:
這樣就能比較好的保護自己的服務了。。。。。。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。