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();
}
组件设计器生成的代码
#region
组件设计器生成的代码
//
Web 服务设计器所必需的
private
IContainer components
=
null
;
/**/
///
<summary>
///
设计器支持所需的方法 - 不要使用代码编辑器修改
///
此方法的内容。
///
</summary>
private
void
InitializeComponent()
{
}
/**/
///
<summary>
///
清理所有正在使用的资源。
///
</summary>
protected
override
void
Dispose(
bool
disposing )
{
if
(disposing
&&
components
!=
null
)
{
components.Dispose();
}
base
.Dispose(disposing);
}
#endregion
//
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);
}
属性
#region
属性
/**/
///
<summary>
///
用户名
///
</summary>
public
string
UserID
{
get
{
return
_UserID;}
set
{_UserID
=
value;}
}
/**/
///
<summary>
///
加密后的密码
///
</summary>
public
string
PassWord
{
get
{
return
_PassWord;}
set
{_PassWord
=
value;}
}
#endregion
方法
#region
方法
/**/
///
<summary>
///
初始化
///
</summary>
///
<param name="nUserID">
用户ID
</param>
///
<param name="nPassWord">
加密后的密码
</param>
public
void
Initial(
string
nUserID,
string
nPassWord)
{
UserID
=
nUserID;
PassWord
=
nPassWord;
}
/**/
///
<summary>
///
用户名密码是否正确
///
</summary>
///
<param name="nUserID">
用户ID
</param>
///
<param name="nPassWord">
加密后的密码
</param>
///
<param name="nMsg">
返回的错误信息
</param>
///
<returns>
用户名密码是否正确
</returns>
public
bool
IsValid(
string
nUserID,
string
nPassWord,
out
string
nMsg)
{
nMsg
=
""
;
try
{
//
判断用户名密码是否正确
if
(nUserID
==
"
admin
"
&&
nPassWord
==
"
admin
"
)
{
return
true
;
}
else
{
nMsg
=
"
对不起,你无权调用此Web服务,可能有如下原因:\n 1.您的帐号被管理员禁用。\n 2.您的帐号密码不正确
"
;
return
false
;
}
}
catch
{
nMsg
=
"
对不起,你无权调用此Web服务,可能有如下原因:\n 1.您的帐号被管理员禁用。\n 2.您的帐号密码不正确
"
;
return
false
;
}
}
/**/
///
<summary>
///
用户名密码是否正确
///
</summary>
///
<returns>
用户名密码是否正确
</returns>
public
bool
IsValid(
out
string
nMsg)
{
return
IsValid(_UserID,_PassWord,
out
nMsg);
}
#endregion
}
}
通过
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
"
);
查看全文
相关阅读:
计算机网络基础
OA项目(MVC项目)
修改XML的节点内容
项目实战-电商(网上书城)
DataTables ajax bootstrap 分页/搜索/排序/常见问题
DNS服务器解析域名的过程
bootstrap 模态框
QuickChm 制作chm文档 chm文档脚本错误,乱码
poi 读取word文档
commons -lang(2) RandomStringUtils RandomUtils
原文地址:https://www.cnblogs.com/engine1984/p/1038412.html
最新文章
AtCoder Grand Contest 012 D:Colorful Balls
POJ1741:Tree
AtCoder Grand Contest 014 E:Blue and Red Tree
AtCoder Grand Contest 006 C:Rabbit Exercise
049 名称空间和作用域
048 函数对象
047 可变长参数
046 函数的参数
045 函数的调用和返回值
045 函数的调用和返回值
热门文章
044 定义函数的三种形式
043 函数的定义
042 文件处理小结
041 文件修改的两种方式
SQL Server数据库入门学习总结
使用Div + CSS布局页面
CSS选择符
CSS入门
数据库概念02-数据模型
ASP.NET简介
Copyright © 2011-2022 走看看