WebService之SoapHeader


1.创建

在WebService服务中添加一个类CustomSoapHeader,继承至System.Web.Services.Protocols.SoapHeader父类,必须添加一个无参构造函数,再添加一些验证逻辑,如图:

该类所有代码:

/// <summary>
/// 解决安全问题
/// </summary>
public class CustomSoapHeader : System.Web.Services.Protocols.SoapHeader//必须继承这个父类
{

    private string userName = string.Empty;
    private string passWord = string.Empty;
    public CustomSoapHeader()//必须有一个无参数的构造函数
    { }

    /// <summary>
    /// 构造函数
    /// </summary>
    /// <param name="userName">用户名</param>
    /// <param name="passWord">密码</param>
    public CustomSoapHeader(string userName, string passWord)
    {
        this.userName = userName;
        this.passWord = passWord;
    }

    /// <summary>
    /// 获取或设置用户用户名
    /// </summary>
    public string UserName
    {
        get { return userName; }
        set { this.userName = value; }
    }

    /// <summary>
    /// 获取或设置用户密码
    /// </summary>
    public string PassWord
    {
        get { return passWord; }
        set { this.passWord = value; }
    }
    /// <summary>
    /// 校验身份
    /// </summary>
    /// <returns></returns>
    public bool Validate()
    {
        return this.UserName.Contains("s") && this.PassWord.Contains("1");
    }
}

在对外提供的方法进行验证

public CustomSoapHeader CustomSoapHeader;//声明一个CustomSoapHeader变量

[WebMethod]
[System.Web.Services.Protocols.SoapHeader("CustomSoapHeader")]
public List<WebServiceUser> Get()
{
    if (this.CustomSoapHeader != null && this.CustomSoapHeader.Validate())
    {
        return new List<WebServiceUser>()
        {
            new WebServiceUser()
            {
                Id=123,
                Age=23,
                Sex=0,
                Name="艾边成",
                Description="这是一个傻屌"
            },
            new WebServiceUser()
            {
                Id=234,
                Age=34,
                Sex=0,
                Name="乔戴马",
                Description="这是一个闷骚"
            },
        };
    }
    else
    {
        throw new SoapException("身份验证不通过", SoapHeaderException.ServerFaultCode);
    }
}

在另一个程序中调用时

[TestMethod]//测试方法
public void TestMethod()
{
    using (WebServiceTest.MyWebServiceSoapClient client = new WebServiceTest.MyWebServiceSoapClient())
    {
        var result3 = client.Get(new WebServiceTest.CustomSoapHeader()
        {
            UserName = "s400",
            PassWord = "1232433"
        });

    }
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM