SoapHeader

SoapHeader

一.SOAPHEADER

01.using System;  
02.using System.Data;  
03.using System.Configuration;  
04.using System.Web;  
05.using System.Web.Security;  
06.using System.Web.UI;  
07.using System.Web.UI.HtmlControls;  
08.using System.Web.UI.WebControls;  
09.using System.Web.UI.WebControls.WebParts;  
10.  
11./// <summary>   
12.///MySoapHeader 的摘要说明   
13./// </summary>   
14.public class MySoapHeader:System .Web .Services .Protocols .SoapHeader   
15.{  
16.    private string _uname = string.Empty;//webservice访问用户名   
17.  
18.    public string Uname  
19.    {  
20.        get { return _uname; }  
21.        set { _uname = value; }  
22.    }  
23.    private string _password = string.Empty;//webservice访问密码   
24.  
25.    public string Password  
26.    {  
27.        get { return _password; }  
28.        set { _password = value; }  
29.    }  
30.  
31.  
32.    public MySoapHeader()  
33.    {  
34.     //   
35.     //TODO: 在此处添加构造函数逻辑   
36.     //   
37.    }  
38.    public MySoapHeader(string uname, string upass)  
39.    {  
40.        init(uname, upass);  
41.    }  
42.    private void init(string uname, string upass)  
43.    {  
44.        this._password = upass;  
45.        this._uname = uname;  
46.    }  
47.    //验证用户是否有权访问内部接口   
48.    private bool isValid(string uname, string upass, out string msg)  
49.    {  
50.        msg = "";  
51.        if (uname == "admin" && upass =="admin")  
52.        {  
53.            return true;  
54.        }  
55.        else {  
56.            msg = "对不起!您无权调用此WebService!";  
57.            return false;  
58.        }  
59.    }  
60.    //验证用户是否有权访问外部接口   
61.    public bool isValid(out string msg)  
62.    {  
63.        return isValid(_uname, _password,out msg);  
64.    }  
65.}
.

 二.WEBSERVICE

01.using System;  
02.using System.Collections;  
03.using System.Linq;  
04.using System.Web;  
05.using System.Web.Services;  
06.using System.Web.Services.Protocols;  
07.using System.Xml.Linq;  
08.  
09./// <summary>   
10.///test 的摘要说明   
11./// </summary>   
12.[WebService(Namespace = "http://tempuri.org/")]  
13.[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]  
14.//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。    
15.// [System.Web.Script.Services.ScriptService]   
16.public class test : System.Web.Services.WebService {  
17.  
18.    public test () {  
19.  
20.        //如果使用设计的组件,请取消注释以下行    
21.        //InitializeComponent();    
22.    }  
23.    public MySoapHeader myheader = new MySoapHeader();  
24.    [WebMethod]  
25.    public string HelloWorld() {//普通WebService,无需验证   
26.        return "Hello World";  
27.    }  
28.    [SoapHeader("myheader")]//加入此头部的WebService需要验证,不加则为普通WebService无需验证   
29.  
30.    [WebMethod(Description = "根据产品编号查询产品的价格", EnableSession = true)]  
31.  
32.    public string GetProductPrice2(string ProductId)  
33.    {  
34.  
35.        string msg = "";  
36.  
37.        //验证是否有权访问   
38.  
39.        if (!myheader.isValid(out  msg))  
40.        {  
41.  
42.            return -1;//返回错误信息   
43.  
44.        }  
45.  
46.        return ProductId;  
47.    }  
48. }
.

 三.WEB

01.using System;  
02.using System.Configuration;  
03.using System.Data;  
04.using System.Web;  
05.using System.Web.Security;  
06.using System.Web.UI;  
07.using System.Web.UI.HtmlControls;  
08.using System.Web.UI.WebControls;  
09.using System.Web.UI.WebControls.WebParts;  
10.public partial class _Default : System.Web.UI.Page   
11.{  
12.    protected void Page_Load(object sender, EventArgs e)  
13.    {  
14.        myservice.test te = new abc.test();  
15.        myservice.MySoapHeader myhead = new MySoapHeader();  
16.        myhead.Uname = "admin";//输入WebService访问用户名   
17.        myhead.Password = "admin";//输入WebService访问密码   
18.        te.MySoapHeaderValue = myhead;//   
19.        string test = te.GetProductPrice2("ok!");  
20.      Response.Write(aa);//用户名、密码输入正确则输出ok 否则输出 错误msg   
21.    }  
22.}
.