在 IIS 5 和 7 上部署 WCF 和 Silverlight 应用程序






4.92/5 (6投票s)
在 IIS 5 和 IIS 7 上部署和配置由 Silverlight 客户端使用的 WCF 服务。
目录
1. 先决条件
在本文中,我将深入探讨在 IIS 5 和 IIS 7 上部署和配置由 Silverlight 客户端使用的 WCF 服务。
本文的先决条件如下:
1.1 服务器端
您应该已安装以下软件:
- Windows XP 或 Windows 7
- 已安装 IIS
- .NET Framework 3.5 或 4.0 (推荐)
1.2 客户端
Silverlight 2、3 或 4 (最好是正确的 Silverlight 版本;如果未使用的正确版本,Silverlight 应用程序将无法正常运行)。
1.3. 局域网
要测试我们的应用程序,局域网是必不可少的。
2. 创建 WCF 服务
要创建 WCF 服务,您必须定义要向客户端公开的服务契约。下面是一个计算器服务的服务契约接口的示例:
此处,接口需要标记为 ServiceContract
,并且方法应分别标记为 OperationContract
属性。如果接口中的方法有需要传递的参数,则参数类型应为可序列化类型或数据契约。
在 Calculator.svc.cs 中实现服务。
创建一个包含服务地址、绑定和终结点的 web.config 文件。如果 Silverlight 客户端需要能够访问该服务,则必须支持 basicHttpBinding
、pollingDuplexBinding
或 NetTcpBinding
。
注意:IIS 5 不支持 PollingDuplex
和 NetTcp
绑定。
创建一个 .svc 文件以包含服务器的实现。
现在,WCF 服务已准备好被客户端托管和使用。
3. 在 IIS 5 上配置 WCF 应用程序
3.1 检查服务器计算机上的 IIS
要检查 IIS 的存在,请单击开始 -> 运行,然后在命令窗口中键入 inetmgr。如果 IIS 已安装,IIS 管理控制台将打开。
3.2. 在 IIS 5 上托管 WCF 服务
将 ASP.NET 配置更改为 WCF 服务构建所在的 .NET Framework 版本。
创建一个名为 CalculatorService 的虚拟目录。
创建一个 App_code 文件夹,并将 CalculatorService.cs 和 CalculatorService.svc.cs 放入其中。将 .NET 程序集放入 bin 文件夹。
将 web.config 和 CalculatorService.svc 文件放入虚拟目录 CalculatorService 中。
3.3. 测试 WCF 服务
在虚拟目录 https://:64692/CalculatorService/CalculatorService.svc 中输入 WCF 服务的 URL 和 SVC 文件的路径,然后出现下图所示的页面:
4. 在 IIS 7 上配置 WCF 应用程序
4.1. 在计算机上安装 IIS 7
要安装 IIS,请单击开始 -> 运行,然后在命令窗口中键入 appwiz.cpl 并按 Enter 键。现在单击启用或关闭 Windows 功能。
启用 Internet Information Services,并确保 IIS 下的所有子文件夹都已选中,然后单击“确定”。这将会在您的计算机上安装 IIS。
同时启用 Microsoft .NET Framework 3.5.1,并确保 WCF HTTP 激活和 WCF 非 HTTP 激活已启用,然后单击“确定”。
我们需要注册 aspnet_regiis.exe 来告知 IIS WCF 扩展。在命令提示符下,转到以下路径:WINDOWS\Microsoft.NET\Framework\v4.0.30319>asp.net_regiis.exe -i –enable 并按 Enter 键。
要注册 WCF 扩展,在命令提示符下,转到以下路径:Windows Microsoft.NET\Framework\\V3.0\Windows Communication Foundation\ServiceModelReg.exe –i 并按 Enter 键。
要检查 IIS 的存在,请单击开始 -> 运行,然后在命令窗口中键入 inetmgr 并按 Enter 键。IIS 管理窗口将打开。双击应用程序池。将 Framework 版本设置为 4.0 或 3.5,并将管道模式设置为集成或经典模式,然后单击“确定”,如下图所示。
在 IIS 中,浏览到 MIME 类型,并检查 .xaml、.xbap、.xap 等动词和扩展名,因为这些扩展名由 Silverlight 应用程序使用。
注意:从 IIS 7.0 开始,这些 MIME 类型已可用,因此我们无需添加它们,但如果我们使用的是较低版本,则需要单独添加它们。
4.2. 在 IIS 7 上托管 WCF 服务
将 ASP.NET 配置更改为 WCF 服务构建所在的 .NET Framework 版本。
创建一个名为 CalculatorService 的虚拟目录。
创建一个 App_code 文件夹,并将 CalculatorService.cs 和 CalculatorService.svc.cs 放入其中。将 .NET 程序集放入 bin 文件夹。
将 web.config 和 patientService.svc 文件放入虚拟目录。
4.3. 测试 WCF 服务
在虚拟目录 https://:64692/CalculatorService.svc 中输入 WCF 服务的 URL 和 svc 文件的路径,然后出现下图所示的页面。
要查看 WSDL,请单击图 9 中的链接。
5. 为 Silverlight 配置安全参数
如果您需要使用 Silverlight 客户端,则需要在虚拟目录中添加两个文件:clientaccesspolicy.xml 和 crossDomain.xml。这些策略对于 IIS 5 和 IIS 7 都是相同的。
在 allow-from
标签中,我们可以配置 http-request-headers,例如 SOAP、content-type 以支持 MIME。我们还可以通过将它们包含在 allow-from
标签中的 <domain uri>
标签中来限制对一组受信任站点的访问。这有助于我们克服来自伪造客户端的拒绝服务攻击。如果您只想允许从一个其他域(例如 http://mysite.com)访问,请将 clientaccesspolicy.xml 文件中 <allow-from>
元素内的 <domain uri="*"/>
行替换为 <domain uri="http://mysite.com"/>
行。如果 <domain-Uri>
标签使用 *,则允许所有站点访问该服务。如上所述,您还需要一个 ClientAccessPolicy
来访问 Silverlight 应用程序。将 ClientAccessPolicy
和 CrossDomainPolicy
放在虚拟目录中,然后应用程序就可以使用了。