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();
     
  • 相关阅读:
    简单多层神经网络实现异或XOR
    思科Cisco 交换机 VTP负载均衡的配置
    AJAX异步检查,检查用户名是否存在
    C++两个队列实现一个栈
    安装SourceTree遇到的一个个坑
    Everything的简单使用
    怎么通过tomcat的catalina.out查看日志
    zk可视化工具
    Linux未安装上传下载的插件,怎么进行文件的上传下载
    Oracle修改数据库的日期
  • 原文地址:https://www.cnblogs.com/xingbinggong/p/3037984.html
Copyright © 2011-2022 走看看