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.pswp.cn/news/273824.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/273824.shtml
英文地址,請注明出處:http://en.pswp.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 包…