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