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