Welcome

首页 / 软件开发 / Silverlight / 稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务,对传输信息做加密

稳扎稳打Silverlight(22) - 2.0通信之调用WCF服务,对传输信息做加密2010-04-26 cnblogs webabcd介绍

Silverlight 2.0 调用WCF服务,对客户端与服务端传输的消息做加密

在Visual Studio 2008中使用"添加服务引用"会自动生成代理类。只支持BasicHttpBinding

示例

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>
<!--

System.Net 命名空间 和 System.Net.Sockets 命名空间的跨域调用,需要在目标域的根目录下配置策略文件

Image 控件 和 MediaElement 控件所访问的跨域地址,不受策略文件的限制

HTTP 调用仅支持 GET 和 POST ,只有 200(确定) 和 404(未找到) 状态代码可用

同域:同一子域、协议和端口。不符合以上任一条件则为跨域

Silverlight 与 HTTP/HTTPS 的所有通信均为异步

关于策略文件详见文档

-->

1、调用WCF服务

WCFService.cs(WCF服务)

using System;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.Collections.Generic;
using System.Text;

using System.Security.Cryptography;
using System.IO;

/**//// <summary>
/// 提供 WCF服务的类
/// </summary>
[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class WCFService
{
/**//// <summary>
/// 返回指定的 User 对象(用于演示 Silverlight 调用WCF服务)
/// </summary>
/// <param name="name">名字</param>
/// <returns></returns>
[OperationContract]
public User GetUser(string name)
{
return new User { Name = name, DayOfBirth = new DateTime(1980, 2, 14) };
}
}