微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WebService的简单使用

适合使用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;
            }
        }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐