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();