zoukankan      html  css  js  c++  java
  • 添加Soap头来增加Web Service的安全性

    myService.asmx.cs

    添加类:MyHeader 从 System.Web.Services.Protocols.SoapHeader继承

    完整的代码如下


    using System;

    using System.Collections;

    using System.ComponentModel;

    using System.Data;

    using System.Diagnostics;

    using System.Web;

    using System.Web.Services;

    //对soap Head引用添加的命名空间

    using System.Web.Services.Protocols; 

     

    namespace study

    {

         
    /// <summary>

         
    /// myService 的摘要说明。

         
    /// </summary>


         
    //[WebService(Namespace="http://MyServer/MyWebServices/")]

         
    public class myService : System.Web.Services.WebService

         
    {

             
    /// <summary>

             
    /// Soap头实例

             
    /// </summary>


             
    public MyHeader myHeader=new MyHeader();

     

             
    public myService()

             
    {

                  
    //CODEGEN: 该调用是 ASP.NET Web 服务设计器所必需的

     

                  InitializeComponent();

     

             }


     

             
    组件设计器生成的代码

     

             
    // WEB 服务示例

             
    // HelloWorld() 示例服务返回字符串 Hello World

             
    // 若要生成,请取消注释下列行,然后保存并生成项目

             
    // 若要测试此 Web 服务,请按 F5 键

     

             [WebMethod]

             
    public string HelloWorld()

             
    {

                  
    return "Hello World";

             }


             [SoapHeader(
    "myHeader")]

             [WebMethod(Description
    ="ddddddd",EnableSession=true)]

             
    public string HelloWorld2(string contents)

             
    {

                  
    string msg = "";

                  
    //验证是否有权访问

                  
    if(!myHeader.IsValid(out  msg))

                       
    return msg;

                  
    return "Hello World:"+contents;

             }


         }


         
    public class MyHeader :  System.Web.Services.Protocols.SoapHeader 

         
    {

             
    private string _UserID=string.Empty;

             
    private string _PassWord=string.Empty;

     

             
    /// <summary>

             
    /// 构造函数

             
    /// </summary>


             
    public MyHeader()

             
    {

     

             }


             
    /// <summary>

             
    /// 构造函数

             
    /// </summary>

             
    /// <param name="nUserID">用户ID</param>

             
    /// <param name="nPassWord">加密后的密码</param>


             
    public MyHeader(string nUserID,string nPassWord)

             
    {

                  Initial(nUserID,nPassWord);

             }


             

             
    属性

             
    方法 

    }


     

    }



    通过soap调用的代码如下:


                  // 在此处放置用户代码以初始化页面

                  
    //创建myService对象

                  MyWebServer.myService service 
    = new study.MyWebServer.myService();

                  
    //创建soap头对象

                  MyWebServer.MyHeader header 
    = new study.MyWebServer.MyHeader();

                  
    //设置soap头变量

                  header.PassWord 
    = "admin";

                  header.UserID 
    = "admin";

                  service.MyHeaderValue 
    = header;

                  
    //调用web 方法

                
    this.Label1.Text = service.HelloWorld2("dob");

     


  • 相关阅读:
    [luoguP2770] 航空路线问题(最小费用最大流)
    javascript技巧大全套
    jLim
    自己封装的Ajax
    JavaScript函数调用规则
    JavaScript模板引擎使用
    JavaScript MD5
    JavaScript SHA-1
    JavaScript Map对象的实现
    javascript中的_return_false和return_true
  • 原文地址:https://www.cnblogs.com/engine1984/p/1038412.html
Copyright © 2011-2022 走看看