一.使用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();