一 自定义SoapHeader类
public class MyHeader :SoapHeader
{
public MyHeader() { }
private string _token = "";
public string Token
{
get { return _token; }
set { _token = value; }
}
}
注意一定要继承SoapHeader类
二 编写Webservice
[WebService(Namespace = "http://www.liuwu.net/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class WebService : System.Web.Services.WebService
{
public MyHeader header;
[WebMethod]
[SoapHeader("header")]
public bool IsRightUser()
{
return CheckToken();
}
/// <summary>
/// 验证令牌
/// </summary>
/// <remarks>
///此处仅供演示,根据实际情况可添加更加复杂的验证过程
///</remarks>
/// <returns></returns>
private bool CheckToken()
{
if (header != null && header.Token == "123")
{
return true;
}
return false;
}
}
我们声明了MyHeader类的实例header,并且在IsRightUser函数中增加了SoapHeader属性,指明使用header来保存他的值。
三 客户端调用
新建winform应用程序,并添加web引用,引用名为:SoapHeaderTest,具体调用方法如下
SoapHeaderTest.MyHeader header = new SoapHeaderTest.MyHeader();
header.Token = "123";
SoapHeaderTest.WebService ws = new SoapHeaderTest.WebService();
ws.MyHeaderValue = header;
bool b = ws.IsRightUser();
注意必须给ws的MyHeaderValue赋值