一:解决办法
Silverlight客户端调用WCF服务在实际使用中经常会出现的问题就是无法直接应用类文件和配置文件。微软针对这一情况已经给出了解决办法。
WCF开发框架可以帮助我们实现可靠性较高的跨平台解决方案。对于这样一款功能性较强的工具,我们在实际使用中通常也会遇到一些问题。在这里就来了解一下其中Silverlight客户端调用WCF服务的一些难题解疑。
WCF服务端做好后,可以通过SVCUTIL.exe工具生成客户端代码和配置文件,这些内容比较简单,在这里就不做详细介绍。
但是,如果使用Silverlight客户端调用WCF服务,则无法直接应用这些类文件和配置文件。
那么针对以上这些问题,我们应该如何正确解决呢?
1.silverlight默认不能引用其他.net类库项目,原因是MSCORLib的版本不同。这一点,主要是因为.NET和Siverlight属于不同的平台,虽然两者都可以使用C#或者VB.net来开发。
2.微软给出的Silverlight客户端调用WCF服务解决办法是,silverlight通过web service方式来应用WCF服务。具体步骤是:
a. 先建立WCF服务ASP.net网站;
b. 然后添加“启用了Silverlight的WCF服务”;
c. 修改服务契约;
d. 在Silverlight里边添加SVC的网络地址引用,这和添加其他WEB Service类似,给客户端的服务引用起名字,然后就可以在Silverlight里边使用了。
以上就是Silverlight客户端调用WCF服务出现问题后的解决方法。
二:代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes; namespace WCFSilverlightApplication
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
} void sc_GetDataCompleted(object sender, ServiceReference1.GetDataCompletedEventArgs e)
{
MessageBox.Show(e.Result);
} private void btnLogin_Click(object sender, RoutedEventArgs e)
{
ServiceReference1.Service1Client sc = new ServiceReference1.Service1Client();
sc.GetDataCompleted += new EventHandler<ServiceReference1.GetDataCompletedEventArgs>(sc_GetDataCompleted);
sc.GetDataAsync(Convert.ToInt32(txtName.Text.Trim()));
}
}
}