创建一个新的Silverlight 项目和具有承载Silverlight 控件 Web 项目。
打开Visual Studio 并选择菜单“文件”-> “新建” -> “项目”
步骤:
1. 打开 Visual Studio 并选择菜单 “文件” -> “新建”-> “项目”
2.在你喜欢的语言下面选择项目类型为“ Silverlight”并选择“ Silverlight应用程序”模板。这里我们选择的是 Visual C#。为项目命名为“ AccessSessionFromSilverlight”并选择“为解决方案创建目录”选项因此所有项目文件多在文件夹结构中。
3.在下一个对话框中,选择“为解决方案添加一个承载控件的 Web ”
4.在 Visual Studio 创建解决方案后,右键解决方案资源管理器中的 Web 项目并选择“添加新项”。
选择默认名字“Service1.svc ”并按“添加” 按钮。
5. 从对话框左边面板选择“ Silverlight ”类别。从右边面板,选择“ Silverlight-enabled WCF 服务”模板。
6. 选择默认名字“ Service1.svc ”并按“添加” 按钮。
7. 你看到如下代码:
[ServiceContract (Namespace ="" )]
[AspNetCompatibilityRequirements (RequirementsMode =
AspNetCompatibilityRequirementsMode .Allowed)]
public class Service1 {
[OperationContract ]
public void DoWork() {
// 在此处添加操作实现
return ;
}
// 在此处添加更多操作并使用[OperationContract] 标记它们
}
按如下显示添加新的方法:
[OperationContract ]
public object GetSessionVariable(string key) {
return System.Web.HttpContext .Current.Session[key];
}
8. 打开解决方案资源管理器。右键“ Service1.svc ”文件并选择“设为起始页”
9. 按 Ctrl + F5 运行应用程序(或使用菜单“调试”–> “开始执行不调试”)。
在浏览器打开 Service1 元数据并显示。忽略页面内容,从浏览器复制 URL 。 URL 类似于:
http://localhost:1873/Service1.svc
这个端口号可能会不同。
10. 回到 Visual Studio 的解决方案管理器。右键 Silverlight 项目(不是 Web 项目)并选择“添加Service 引用”。
在地址域中,指定从浏览器中复制的URL ,点击“前往”。
在底部左边,修改命名空间为“ MySampleService ”。点击“确定”按钮添加服务引用。
现在可以从 Silverlight 客户端调用 WCF 服务。
按下面步骤测试:
1. 打开 Page1.xaml 文件并添加一个文本框用于显示从WCF 方法返回的字符串。
2. 从 UserControl 中添加“Loaded ”事件。
Page1.xaml 中的完整代码如下:
< UserControl x : Class ="Silverlight_With_WCF.Page"
xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns : x ="http://schemas.microsoft.com/winfx/2006/xaml"
Width ="400" Height ="300"
Loaded ="UserControl_Loaded">
<Grid x : Name ="LayoutRoot" Background ="White">
<TextBlock x : Name ="textblock1" Width ="200" Height ="30"></ TextBlock >
</Grid >
</ UserControl >
现在在后置代码中( Page1.xaml.cs )中,按如下方式添加 WCF 服务调用:
private void UserControl_Loaded(object sender,RoutedEventArgs e) {
MyService.Service1Client client =
new AccessSessionFromSilverlight.MyService.Service1Client ();
client.GetSessionVariableCompleted +=
new EventHandler <AccessSessionFromSilverlight.MyService.
GetSessionVariableCompletedEventArgs >(
client_GetSessionVariableCompleted);
client.GetSessionVariableAsync("Name" );
}
void client_GetSessionVariableCompleted(object sender,
AccessSessionFromSilverlight.MyService.
GetSessionVariableCompletedEventArgs e) {
if (e.Result == null )
textblock1.Text = "Session variable not set" ;
else
textblock1.Text = e.Result.ToString();
}
在解决方案资源管理器中打开 Web 项目,并设置 Silverlight 测试页面为起始页码。运行项目。可以看到Silverlight 客户端调用 WCF服务的显示结果。