在Web 服务中接收和处理 SOAP 标头的基本步骤:
·创建一个从 SoapHeader 派生的类,表示传入 SOAP 标头的数据。
·将一个成员添加到实现 XML Web services 的类或 XML Web services 客户端代理类(它们属于在第一步创建的类型)。
·指定第二步中在 MemberName 属性中创建的成员,将 SoapHeaderAttribute 应用于 XML Web services 方法或代理类中的对应方法。
·在 XML Web services 方法或 XML Web services 客户端代码中访问 MemberName 属性,以处理在 SOAP 标头中发送的数据。
示例
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
/// <summary>
/// SoapHeader 派生类
/// </summary>
public class MySoapHeader : SoapHeader
{
//用户名
private string _userName;
public string UserName
{
get { return _userName; }
set { _userName = value; }
}
//密码
private string _userPass;
public string UserPass
{
get { return _userPass; }
set { _userPass = value; }
}
//检测权限
public bool Check()
{
if (UserName == "admin" && UserPass == "admin888")
return true;
else
return false;
}
}
[WebService(Namespace = "http://www.mzwu.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service : System.Web.Services.WebService
{
//MySoapHeader类型属性
private MySoapHeader _soap;
public MySoapHeader Soap
{
get { return _soap; }
set { _soap = value; }
}
public Service () {
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}
[WebMethod(Description="Web 服务身份验证示例")]
[SoapHeader("Soap", Direction = SoapHeaderDirection.InOut)]
public string Hello(string name) {
if (!Soap.Check())
return "身份验证不通过!";
return "Hello," + name;
}
}调用示例:
WS.MySoapHeader soap = new WS.MySoapHeader();
soap.UserName = "admin";
soap.UserPass = "admin888";
WS.Service service1 = new WS.Service();
service1.MySoapHeaderValue = soap;
Response.Write(service1.Hello("Jack"));参考文章
SoapHeader 类:http://msdn.microsoft.com/zh-cn/library/system.web.services.protocols.soapheader.aspx
评论(0)
暂无评论。