WebService Header使用
在写WebService的时候如果不想让任何人都可以调用你的接口的话,可以给接口加一个验证,WebService Header就要发挥它的作用了
1.WebService代码如下:
/// <summary> /// GreenCitySSOService 的摘要说明 /// </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 GreenCitySSOService : System.Web.Services.WebService { public AuthHeader header = new AuthHeader(); [WebMethod] [SoapHeader("header")] ///传入用户信息获取Token public string GetToken(string UserID) { string validate = header.ValidateUser; if (validate == "ok") { return UserID+",表头验证成功"; } else if (validate == "NullError") { return UserID+",WebService头的用户名密码为空"; } else if (validate == "UserError") { return UserID + ",WebService头的用户名密码不正确"; } return UserID + ",表头验证失败"; } } //webService Header验证 public class AuthHeader : SoapHeader { //用户名 public string User { get; set; } //密码 public string Pwd { get; set; } //验证用户 public string ValidateUser { get { string validate = ""; string SysUser = ConfigurationManager.AppSettings["SSOWebServiceUser"].ToString(); string SysPwd = ConfigurationManager.AppSettings["SSOWebServicePwd"].ToString(); if (string.IsNullOrEmpty(User) || string.IsNullOrEmpty(Pwd)) { validate = "NullError"; } else if (User == SysUser && Pwd == SysPwd) { validate = "ok"; } else { validate = "UserError"; } return validate; } } }
2.后台调用方法如下:
public ActionResult Index() { //WebService 接口 SSOTest.GreenCitySSOService service = new SSOTest.GreenCitySSOService(); //接口里面的Header类,输入接口需要的用户名和密码 AuthHeader header = new AuthHeader(); header.User = "*****"; header.Pwd = "*****"; //将header类传给接口的AuthHeaderValue属性 service.AuthHeaderValue = header; //接口调用 string Ret=service.GetToken("licong"); ViewBag.Ret = Ret; return View(); }

浙公网安备 33010602011771号