Silverlight学习笔记三:WCF跨域调用,实现登陆页

Silverlight学习笔记三:WCF跨域调用,实现登陆页,第1张

概述WCF服务应用程序端: 建立WCF服务应用程序,并连接数据库。 【1】:新建WCF服务应用程序。 【2】:在IService1.cs中,添加代码: //登陆函数 [OperationContract] bool LoginVaild(string username,string pwd);   然后,在Service1.svc.cs文件中 ,在接

WCF服务应用程序端:

建立WCF服务应用程序,并连接数据库。

【1】:新建WCF服务应用程序。

【2】:在IService1.cs中,添加代码:

        //登陆函数        [OperationContract]        bool LoginVaild(string username,string pwd);

 


然后,在Service1.svc.cs文件中 ,在接口上

 

点击右键,实现接口。

此时,会自动生成一个函数:

       public bool LoginVaild(string username,string pwd)        {            throw new NotImplementedException();        }


在这个函数中添加登陆代码。

 

WCF连接数据库:

【3】:新建数据库:

并添加一个用户,用户名和密码都为:admin,方便后面登陆测试。

【2】:为WCF项目添加ADO.NET数据库实体模型

 

OK.

 

【4】:编写登陆代码:

 public bool LoginVaild(string username,string password)        {            bool result = false;            using (SLtestEntitIEs entitIEs = new SLtestEntitIEs())//建立实体模型代理            {                var user = entitIEs.UserInfo.Where(c => c.user_name == username && c.password == password).SingleOrDefault();                if (user==null)                {                    result = false;                }                else                {                    result = true;                }            }            return result;        }


 【5】:固定端口

WCF项目,右键=》属性=》

 

【6】:生成一下解决方案,在浏览器中打开Service1.svc,从而开启服务。至此,WCF完成。

 

 

 

 Siverlight端:

 【1】新建项目,建立Siverlight应用程序。

【2】:添加服务引用。

【3】:新建 Siverlight用户控件,作为登陆界面,命名为Login.xaml。改启动页面为Login.xaml。 

 【4】:编写登陆代码:

        private voID button1_Click(object sender,RoutedEventArgs e)        {            string username = textBox1.Text.Trim();            string pwd = passwordBox1.Password.Trim();            Service1ClIEnt clIEnt = new Service1ClIEnt();            clIEnt.LoginVaildCompleted += new EventHandler<LoginVaildCompletedEventArgs>(clIEnt_LoginVaildCompleted);            clIEnt.LoginVaildAsync(username,pwd);            clIEnt.CloseAsync();        }        voID clIEnt_LoginVaildCompleted(object sender,LoginVaildCompletedEventArgs e)        {            if (e.Error==null)            {                if (e.Result==true)                {                    this.Content = new MainPage();//页面转跳到MainPage                }                else                {                    MessageBox.Show("用户名或者密码错误!");                }            }            else            {                MessageBox.Show(e.Result.ToString());            }        }


 

 运行项目,会发现出错了,错误如下:

错误原因,当Siverlight想WCF发出跨域请求时候,会问WCF是否允许接受跨域请求,怎么样WCF允许跨域请求呢?WCF必须有跨域文件

跨域文件名字必须是:clIEntaccesspolicy.xml

 

文件内容为:

<?xml version="1.0" enCoding="utf-8" ?><access-policy>  <cross-domain-access>    <policy>      <allow-from http-request-headers="*">        <domain uri="*"/>         </allow-from>      <grant-to>        <resource path="/" include-subpaths="true"/>      </grant-to>        </policy>   </cross-domain-access></access-policy>


解决办法:在WCF项目中添加此跨域文件,并重新生成解决方案。

 

至此,本节内容结束。 总结

以上是内存溢出为你收集整理的Silverlight学习笔记三:WCF跨域调用,实现登陆页全部内容,希望文章能够帮你解决Silverlight学习笔记三:WCF跨域调用,实现登陆页所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1067648.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存