使用soaphead方法可以在webservice的請求中增加頭部信息,當(dāng)有人調(diào)用我們的webservice時,可以通過查詢這個請求的頭部信息并驗證來防止該軟件以外的程序調(diào)用webservice
一、服務(wù)端部分
using System; using System.Web.Services; using System.Web.Services.Protocols; //請注意此命名空間必須有別于代理動態(tài)連接庫上的命名空間。 //否則,將產(chǎn)生諸如多處定義AuthHeader這樣的錯誤。 namespace SoapHeadersCS { //由SoapHeader擴(kuò)展而來的AuthHeader類 public class AuthHeaderCS : SoapHeader { public string Username; public string Password; } //[WebService(Description="用于演示SOAP頭文件用法的簡單示例")] public class HeaderService { public AuthHeaderCS sHeader; [WebMethod(Description = "此方法要求有調(diào)用方自定義設(shè)置的soap頭文件")] [SoapHeader("sHeader")] public string SecureMethod() { if (sHeader == null) return "ERROR:你不是VIP用戶!"; string usr = sHeader.Username; string pwd = sHeader.Password; if (AuthenticateUser(usr, pwd)) { return "成功:" + usr + "," + pwd; } else { return "錯誤:未能通過身份驗證"; } } private bool AuthenticateUser(string usr, string pwd) { if ((usr != null) && (pwd != null)) { return true; } return false; } } }
二、客戶端部分加上驗證的請求
WebService webservice = new WebService(); AuthHeaderCS auth = new AuthHeaderCS(); auth.Username = "vip"; auth.Password = "vippw"; webservice.AuthHeaderCSValue = auth; textBox1.Text = webservice.SecureMethod();
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com