W2Fly

导航

发布并使用带有SoapHeader的Web服务

服务端代码:
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;

public class MyServiceClassHeader : SoapHeader
{
    public string UsN;
    public string PaW;
};

[WebService(Namespace = "http://localhost/Test4/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class ServiceTest4 : System.Web.Services.WebService
{
    public MyServiceClassHeader MSCH;
    public ServiceTest4()
    {
}

    [WebMethod]
    [SoapHeader("MSCH", Direction = SoapHeaderDirection.In)]
    public string Login()
    {
        if( MSCH != null)
        {
            if (MSCH.MustUnderstand)
            {
                string UserName = MSCH.UsN;
                string PassWord = MSCH.PaW;
                if (UserName == "wenziyan" || PassWord == "811208")
                {
                    return "登录成功!";
                }
                else
                {
                    return "登录失败!";
                }
            }
            else
            {
                return "消息头不是必读的!";
            }
        }
        else
            {
                return "没有头消息!";
            }
    }
}

客户端代码:
static void Main(string[] args)
        {
            MyTest4.MyServiceClassHeader MyHeaer = new MyTest4.MyServiceClassHeader();
            MyTest4.ServiceTest4 service = new MyTest4.ServiceTest4();
            string userName = "wenziyan";
            string passWord = "811208";
            MyHeaer.UsN = userName;
            MyHeaer.PaW = passWord;
            MyHeaer.MustUnderstand = true;
            service.MyServiceClassHeaderValue = MyHeaer;
            string flag = service.Login();
            Console.WriteLine(flag);
        }


注意:客户端调用时候必须首先设置web service代理类的头并且为其赋值后再调用他的方法。至于是先绑定还是先赋值没有关系。

posted on 2007-01-25 17:04  像大海一样......  阅读(676)  评论(0)    收藏  举报