WebService应用一例,带有安全验证

1、创建WEB项目,添加WEB服务WebService1.asmx,代码如下:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Services;
 6 
 7 namespace WebService
 8 {
 9     /// <summary>
10     /// WebService1 的摘要说明
11     /// </summary>
12     [WebService(Namespace = "http://tempuri.org/")]
13     [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
14     [System.ComponentModel.ToolboxItem(false)]
15     // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
16     // [System.Web.Script.Services.ScriptService]    
17     public class WebService1 : System.Web.Services.WebService
18     {
19 
20         //声明Soap头实例
21         public MySoapHeader myHeader = new MySoapHeader();
22 
23         [System.Web.Services.Protocols.SoapHeader("myHeader")]
24         [WebMethod]
25         public string HelloWorld()
26         {
27             if (isAuthorized)
28             {
29                 return "Hello World";
30             }
31             else
32             {
33                 return "You do not have power to do this operation!";
34             }
35         }
36 
37         [System.Web.Services.Protocols.SoapHeader("myHeader")]
38         [WebMethod]        
39         public string InputYouName(string name)
40         {            
41             if (isAuthorized)
42             {
43                 return "Hello " + name;
44             }
45             else
46             {
47                 return "You do not have power to do this operation!";
48             }
49         }
50 
51         /// <summary>
52         /// 判断用户是否获得使用授权
53         /// </summary>
54         public bool isAuthorized
55         {
56             get
57             {
58                 if (myHeader.UserName.Equals("pwd") & myHeader.PassWord.Equals("pwd"))
59                 {
60                      return true;
61                 }
62                 else
63                 {
64                     return false;
65                 }
66             }
67         }
68     }
69 }

2、加入安全验证,在这个web项目中添加一个类文件MySoapHeader.cs,具体代码如下:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Web;
 4 
 5 namespace WebService
 6 {
 7     public class MySoapHeader : System.Web.Services.Protocols.SoapHeader
 8     {
 9         private string userName = string.Empty;
10         private string passWord = string.Empty;
11 
12         /// <summary>
13         /// 构造函数
14         /// </summary>
15         public MySoapHeader() { } /// <summary>
16         /// 构造函数
17         /// </summary>
18         /// <param name="userName">用户名</param>
19         /// <param name="passWord">密码</param>
20         public MySoapHeader(string userName, string passWord)
21         {
22             this.userName = userName;
23             this.passWord = passWord;
24         }
25 
26         /// <summary>
27         /// 获取或设置用户用户名
28         /// </summary>
29         public string UserName
30         {
31             get { return userName; }
32             set { userName = value; }
34         }
35 
36         /// <summary>
37         /// 获取或设置用户密码
38         /// </summary>
39         public string PassWord
40         {
41             get { return passWord; }
42             set { passWord = value; }
43         }
44     }
45 }

3、客户端调用,新建一个项目,创建一个控制台程序,调用示例的详细代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace WebServiceControlClient
{class Program{static void Main(string[] args){Service.WebService1SoapClient aa = new Service.WebService1SoapClient();Service.MySoapHeader Header = new Service.MySoapHeader();Header.PassWord = "pwd";Header.UserName = "pwd";Console.WriteLine(aa.HelloWorld(Header)+"\n"+aa.InputYouName(Header,"harry"));Console.Read();}}
}

 

 

 

转载于:https://www.cnblogs.com/wupeihong/p/3611009.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/273824.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux集成开发环境

Linux操作系统的种种集成开发环境随着Linux的逐渐兴起&#xff0c;已经有为数众多的程序在上面驰骋了&#xff0c;许多开发环境(Development Environment)也应运而生。好的开发环境一定是集成了编辑、编译和调试等多项功能并且易于使用。本文介绍了一些在Linux上流行的开发环境…

mysql技术内幕《读书笔记》

文章目录1. mysql 体系结构和存储引擎1.5 连接mysql1.5.11. mysql 体系结构和存储引擎 1.5 连接mysql 连接mysql操作是一个连接进程和mysql数据库实例进行通信。 本质是进程通信&#xff0c;常用的进程通信方式有管道&#xff0c;命名管道&#xff0c;命名字&#xff0c;TCP/…

DEDECMS全版本gotopage变量XSS ROOTKIT 0DAY

影响版本&#xff1a; DEDECMS全版本 漏洞描叙&#xff1a; DEDECMS后台登陆模板中的gotopage变量未效验传入数据&#xff0c;导致XSS漏洞。 \dede\templets\login.htm 65行左右 <input type"hidden" name"gotopage" value"<?php if(!empty($g…

Android开源库loopj的android-async-http的 JsonHttpResponseHandler 存在死循环GC_CONCURRENT

我现在用的是 AndroidAsyncHttp 1.4.4 版本&#xff0c;之前遇到一个很奇怪的问题&#xff0c; 当使用 JsonHttpResponseHandler 解析请求的页面出现服务器错误或其他情况返回的内容不是 JSON 字符串时不会调用自己复写实现的 onSuccess 或者 onFailure 方法&#xff0c;将会出…

python【进阶】4.文本和字节序列

文章目录1. 字符、码位和字节表述4.1字符问题2. bytes、bytearray 和 memoryview 等二进制序列的独特特性3. 全部 Unicode 和陈旧字符集的编解码器4.避免和处理编码错误5.处理文本文件的最佳实践6.默认编码的陷阱和标准 I/O 的问题7.规范化 Unicode 文本,进行安全的比较8.规范化…

C#序列化和反序列化

序列化和反序列化我们可能经常会听到&#xff0c;其实通俗一点的解释&#xff0c;序列化就是把一个对象保存到一个文件或数据库字段中去&#xff0c;反序列化就是在适当的时候把这个文件再转化成原来的对象使用。我想最主要的作用有&#xff1a; 1、在进程下次启动时读取上次保…

python【进阶】5.一等函数(注销)

在 Python 中,函数是一等对象。编程语言理论家把“一等对象”定义为满足下述条件的程 序实体: 在运行时创建能赋值给变量或数据结构中的元素能作为参数传给函数能作为函数的返回结果 在 Python 中,所有函数都是一等对象。 5.1 把函数视作对象 >>> def d(n): ... …

进程状态转换(了解)

进程三个基本状态&#xff1a;就绪、阻塞、运行 这个比较简单&#xff0c;进程创建后进入就绪状态、然后若CPU空闲或能打断CPU正在执行的进程&#xff08;优先级低的&#xff09;&#xff0c;那么就绪状态转换成运行态&#xff0c;运行时&#xff0c;进程需要用到其他资源&…

rebuild online意外终止导致ora-8104错误的实验

rebuild online意外终止导致ora-8104错误的实验 SQL> !oerr ora 810408104, 00000, "this index object %s is being online built or rebuilt"// *Cause: the index is being created or rebuild or waited for recovering // from the online (re)build // *Act…

关于range方法,如果你觉得python很简单就错了

前言&#xff1a;在系统学习迭代器之前&#xff0c;我一直以为 range() 方法也是用于生成迭代器的&#xff0c;现在却突然发现&#xff0c;它生成的只是可迭代对象&#xff0c;而并不是迭代器&#xff01; 1、range() 是什么&#xff1f; 对于 range() 函数&#xff0c;有几个注…

centos下crontab的使用

1.作用使用crontab命令可以修改crontab配置文件&#xff0c;然后该配置由cron公用程序在适当的时间执行&#xff0c;该命令使用权限是所有用户。2.格式crontab [-u user] {-l | -r | -e}3.crontab命令选项: -u指定一个用户, -l列出某个用户的任务计划, -r删除某个用户的任务, -…

关于python3中的包operator(支持函数式编程的包)

文章目录1.functools2.operator.itemgetter3.operator.attrgetter虽然 Guido 明确表明,Python 的目标不是变成函数式编程语言,但是得益于 operator 和 functools 等包的支持,函数式编程风格也可以信手拈来。接下来的两节分别介绍这两 个包。 1.functools 示例1 使用 reduce 函…

collections 中的namedtuple

文章目录namedtuple 基本用法namedtuple特性_make(iterable)_asdict()_replace(**kwargs)_fields_fields_defaults参考&#xff1a;namedtuple 基本用法 Tuple还有一个兄弟&#xff0c;叫namedtuple。虽然都是tuple&#xff0c;但是功能更为强大。对于namedtuple&#xff0c;你…

abap 中modify 的使用

1、modify table itab from wa Transporting f1 f2 ... 表示表itab中符合工作区wa 中关键字的一条数据的 f1 f2字段会被wa中对应的字段值更新。 modify用于更新和新增数据&#xff0c;当表中没有数据时就新增&#xff0c;有就修改。 2、在使用binary search 时一定要先排序&am…

python[进阶] 6.使用一等函数实现设计模式

文章目录6.1.1 经典的“策略”模式6.1.2 使用函数实现“策略”模式6.1.3 选择最佳策略&#xff1a;简单的6.1.4 找出模块中的全部6.2 “命令”模式6.1.1 经典的“策略”模式 为抽象基类&#xff08;Abstract Base Class&#xff0c;ABC&#xff09;&#xff0c;这么做是为了使…

2014阿里巴巴校园招聘笔试题 - 中南站

转载于:https://www.cnblogs.com/gotodsp/articles/3530329.html

python中一些特殊方法的作用

我们先暂且称呼为特殊方法。 单下划线开头&#xff08;_foo&#xff09;双下划线开头的&#xff08;__foo&#xff09;双下划线开头和结尾的&#xff08; __foo__&#xff09;代表不能直接访问的类属性&#xff0c;需通过类提供的接口进行访问&#xff0c;不能用“from xxx im…

Spring的IOC原理[通俗解释一下]

1. IoC理论的背景 我们都知道&#xff0c;在采用面向对象方法设计的软件系统中&#xff0c;它的底层实现都是由N个对象组成的&#xff0c;所有的对象通过彼此的合作&#xff0c;最终实现系统的业务逻辑。 图1&#xff1a;软件系统中耦合的对象 如果我们打开机械式手表的后盖&am…

python爬虫面试遇到的问题

文章目录&#xff11;python基础1.1 列表生成式和生成器的区别 &#xff1f;1.2 如何不用任何循环快速筛掉列表中的奇数元素 &#xff1f;1.3 map和reduce的用法1.4 装饰器的作用1.5 Python中__new__与__init方法的区别1.6 python中的设计模式1.7 lambda函数&#xff0c;以及它…

ubuntu18 常用命令

文章目录卸载和安装卸载和安装 1.打开一个终端&#xff0c;输入dpkg --list ,按下Enter键&#xff0c;终端输出以下内容&#xff0c;显示的是你电脑上安装的所有软件。 2.安装 dpkg –i name.deb 安装一个 deb 包&#xff1b;在终端上输入命令sudo apt-get --purge remove 包…