WebService的简单使用

来源:互联网 发布:linux下的arm模拟器 编辑:程序博客网 时间:2024/06/13 12:31

适合使用Web Services的情况

(1)跨越防火墙;
(2)应用程序集成;
(3)B2B集成;
(4)软件重用

创建WebService

在项目中添加新项--->Web服务  MyWebService.asmx
 
/// <summary>    /// MyWebService 的摘要说明    /// </summary>    [WebService(Namespace = "MyWebService")]    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]    [System.ComponentModel.ToolboxItem(false)]    // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。    // [System.Web.Script.Services.ScriptService]    public class MyWebService : System.Web.Services.WebService    {        public MySoapHeader mySH = null;  //在客户端使用的时候实例化        [WebMethod]        public string HelloWorld()        {            return "Hello World";        }        [SoapHeader("mySH")]   //这里通过SoapHeader传递信息        [WebMethod(Description="判断当前用户是否正确")]        public string IsRigth()        {            if (mySH.IsRight())            {                return "账号有效";            }            return "账号无效";        }    }


MySoapHeader类的代码
public class MySoapHeader:SoapHeader    {        private string username;        public string Username        {            get { return username; }            set { username = value; }        }        private string pwd;        public string Pwd        {            get { return pwd; }            set { pwd = value; }        }        public bool IsRight()        { //简单的判断 用户名和密码是不是admin             if (username == "admin" && pwd == "admin")            {                return true;            }            return false;        }    }


引用WebService

如果在其他项目中要引用此WebService,需要添加服务引用。 输入公开的WebService端点,本地直接点发现即可
找到要添加的项,添加 
在其他页面调用代码:
using (ServiceReference1.MyWebServiceSoapClient client = new ServiceReference1.MyWebServiceSoapClient())            {                ServiceReference1.MySoapHeader mysh = new ServiceReference1.MySoapHeader();  //实例WebService提供端 的SoapHeader                mysh.Username = "admin";  //初始化用户名 密码                mysh.Pwd = "admin";                string str =client.HelloWorld();                  string s = client.IsRigth(mysh); //调用方法时,传入SoapHeader                Response.Write(str+"--"+s);  //在页面输出            }


异步调用WebService

只需在引用WebService后,配置服务引用,选中生成异步操作即可。 
系统会自动生成异步操作方法
第二种异步调用方法,使用BackgroundWorker
BackgroundWorker backWorker = new BackgroundWorker();            backWorker.DoWork += new DoWorkEventHandler(backWorker_DoWork);//制定执行的事件            backWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backWorker_RunWorkerCompleted); //执行完毕后的回调方法            backWorker.RunWorkerAsync(); //开始异步调用void backWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)        {            Response.Write(e.Result); //输出结果        }        void backWorker_DoWork(object sender, DoWorkEventArgs e)        {            using (ServiceReference1.MyWebServiceSoapClient client = new ServiceReference1.MyWebServiceSoapClient())            {                ServiceReference1.MySoapHeader mysh = new ServiceReference1.MySoapHeader();                mysh.Username = "admin";                mysh.Pwd = "admin";                string str = client.HelloWorld();                string s = client.IsRigth(mysh);                e.Result = str + "--" + s;            }        }


原创粉丝点击