SoapHeader

一 自定义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赋值

原文地址:https://www.cnblogs.com/bayonetxxx/p/1629729.html