1. 首先需要在服务中定义一个从 SOAPHeader 派生的类,表示传入 SOAP 标头的数据.
public class SecurityHeader: System.Web.Services.Protocols.SoapHeader
{
public string userName;
public string passWord;
public string key;
public SecurityHeader()
{
}
}
2. 将SecurityHeader类作为webservice类的一个属性公开,并在WebMethod里使用SecurityHeader
这样就允许客户使用这个SoapHeader了。
public class Map : System.Web.Services.WebService
{
public SecurityHeader keyHeader;
public Map()
{
}
[WebMethod,SoapHeader("keyHeader")]
public string HelloWorld()
{
//这里我们可以获得客户传来的header值按需要做验证等处理
string keyValue = keyHeader.key ;
return keyValue;
}
}
客户端使用SoapHeader的方法如下(调用之前先声明webreference MapClient):
MapService.MapClient.SecurityHeader header = new MapService.MapClient.SecurityHeader();
header.userName = "userName";
header.passWord = "passWord";
header.key = "Hello,this is a key....";
MapClient.Map testClient = new MapService.MapClient.Map();
testClient.SecurityHeaderValue = header;
testClient.Credentials = System.Net.CredentialCache.DefaultCredentials;
string ss = testClient.HelloWorld();