发布网友 发布时间:2022-04-24 16:14
共2个回答
懂视网 时间:2022-04-27 14:34
使用soaphead方法可以在webservice的请求中增加头部信息,当有人调用我们的webservice时,可以通过查询这个请求的头部信息并验证来防止该软件以外的程序调用webservice
一、服务端部分
using System; using System.Web.Services; using System.Web.Services.Protocols; //请注意此命名空间必须有别于代理动态连接库上的命名空间。 //否则,将产生诸如多处定义AuthHeader这样的错误。 namespace SoapHeadersCS { //由SoapHeader扩展而来的AuthHeader类 public class AuthHeaderCS : SoapHeader { public string Username; public string Password; } //[WebService(Description="用于演示SOAP头文件用法的简单示例")] public class HeaderService { public AuthHeaderCS sHeader; [WebMethod(Description = "此方法要求有调用方自定义设置的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();
热心网友 时间:2022-04-27 11:42
简单一些继承SoapHeader加入账号密码之类的,然后使用ssl加密通讯过程也差不多了。