zoukankan      html  css  js  c++  java
  • SoapHeader的使用

    自定义类继承SoapHeader用户在webservice表头传递凭据

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Services.Protocols;
    
    namespace FormsAuth.WebService
    {
        public class SoapHeaderCredential:SoapHeader
        {
            private string strUserName = string.Empty;
            private string strPassWord = string.Empty;
    
            public SoapHeaderCredential() { }
    
            public SoapHeaderCredential(string username, string password)
            {
                this.strUserName = username;
                this.strPassWord = password;
            }
    
            #region 构造 用户名|密码
            /// <summary>  
            /// 用户名  
            /// </summary>  
            public string UserName
            {
                get { return strUserName; }
                set { strUserName = value; }
            }
            /// <summary>  
            /// 密码  
            /// </summary>  
            public string PassWord
            {
                get { return strPassWord; }
                set { strPassWord = value; }
            }
    
            #endregion
        }
    }

    添加接口IWebService

    public interface IWebService
    {
          SoapHeaderCredential HeaderCredential { get; set; }
    }

    添加webservice实现IWebService接口

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Services;
    using System.IO;
    using System.Xml.Serialization;
    using System.Text;
    using System.Web.Services.Protocols;
    
    namespace FormsAuth.WebService
    {
        /// <summary>
        /// WebService1 的摘要说明
        /// </summary>
        [WebService(Namespace = "http://tempuri.org/")]
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
        [System.ComponentModel.ToolboxItem(false)]
        // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
        // [System.Web.Script.Services.ScriptService]
        public class WebService1 : System.Web.Services.WebService, IWebService
        {
            [WebMethod]
            [SoapHeader("HeaderCredential")]
            public string HelloWorld()
            {
                SpSoapHeader.CheckLogin(this);
                return "hello word";
            }
    
    
            #region IWebService 成员
    
            public SoapHeaderCredential HeaderCredential
            {
                get;
                set;
            }
    
            #endregion
        }
    }
    SpSoapHeader用户验证
        public class SpSoapHeader
        {
            /// <summary>  
            /// 检测是否正确登录  
            /// </summary>  
            /// <returns></returns>  
            public static bool CheckLogin(IWebService service)
            {
                if (!(service.HeaderCredential.UserName == "user" && service.HeaderCredential.PassWord == "pass"))
                {
                    throw new SoapException("Audit Fail", SoapException.ClientFaultCode, "Security");
                }
                return true;
            }
        }

    在客户端引用webservice,实例化webservice时制定凭据

    WebReferences1.WebService1 client = new FormClient.WebReferences1.WebService1();
    WebReferences1.SoapHeaderCredential header = new FormClient.WebReferences1.SoapHeaderCredential();
    header.UserName = "user";
    header.PassWord = "pass";
    client.SoapHeaderCredentialValue = header;
    string ss = client.HelloWorld();
     
  • 相关阅读:
    天梯赛5-12 愿天下有情人都是失散多年的兄妹 【dfs】
    poj2718 Smallest Difference【贪心】
    HDU problem 5635 LCP Array【思维】
    codeforces 782C Andryusha and Colored Balloons【构造】
    HDU 4278 Faulty Odometer【进制转换】
    codeforces B. The Meeting Place Cannot Be Changed【二分】
    POJ 3264 Balanced Lineup 【线段树】
    HDU 1850
    CodeForces-714C
    HDU Problem 1247 Hat's Words 【字典树】
  • 原文地址:https://www.cnblogs.com/xingbinggong/p/3037984.html
Copyright © 2011-2022 走看看