Welcome

首页 / 软件开发 / 数据结构与算法 / WebService开发(一) 如何使用Soap头

WebService开发(一) 如何使用Soap头2013-01-17 博客园 David Fan平时写Web Service时经常会对Service的访问进行安全控制,方法很多,这里介绍一下如何用Soap头来进行控制的一例。

第一步,引用需要用到的名称空间

using System;using System.Xml;using System.Xml.Serialization;using System.Web.Services;using System.Web.Services.Protocols;
第二步,建立自定义的SoapHeader类MySoapHeader

public class MySoapHeader : SoapHeader{    string _name;    string _passWord;    public string Name    {        get { return _name; }        set { _name = value; }    }    public string PassWord    {        get { return _passWord; }        set { _passWord = value; }    }}
第三步,建立WebSerivce,MyService类有一个MySoapHeader类型的字段公共header,在客户调用CheckHeader之前需要给 header付一个新实例,服务器端检验这个实例的成员信息。失败我们抛出一个SoapHeaderException,这个异常的新实例,这里 调用两个参数的构造函数。第一个参数是自定义的异常原因,第二个参数我们用SoapException.ClientFaultCode表示客户的调 用格式不正确或缺少必要的信息。

[WebService(Namespace = "http://DavidFan.cnblogs.com")]public class MyService : System.Web.Services.WebService{    public MySoapHeader header;    [SoapHeader("header", Direction = SoapHeaderDirection.In)]    public string CheckHeader()    {        if (header == null)        {            throw new SoapHeaderException("认证失败", SoapException.ClientFaultCode);        }        else        {            if (header.Name != "admin" || header.PassWord != "admin")            {                throw new SoapHeaderException("认证失败", SoapException.ClientFaultCode);            }        }        //业务逻辑.        return "Something done";    }}