65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.92/5 (6投票s)

2012年1月6日

CPOL

6分钟阅读

viewsIcon

58498

在 IIS 5 和 IIS 7 上部署和配置由 Silverlight 客户端使用的 WCF 服务。

目录

  1. 必备组件
  2. 创建 WCF 服务
  3. 在 IIS 5 上配置 WCF 应用程序
  4. 在 IIS 7 上配置 WCF 应用程序
  5. 为 Silverlight 配置安全参数

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 服务,您必须定义要向客户端公开的服务契约。下面是一个计算器服务的服务契约接口的示例:

图 1:定义 WCF 服务的服务契约

此处,接口需要标记为 ServiceContract,并且方法应分别标记为 OperationContract 属性。如果接口中的方法有需要传递的参数,则参数类型应为可序列化类型或数据契约。

Calculator.svc.cs 中实现服务。

图 2 服务器端计算器服务的实现

创建一个包含服务地址、绑定和终结点的 web.config 文件。如果 Silverlight 客户端需要能够访问该服务,则必须支持 basicHttpBindingpollingDuplexBindingNetTcpBinding

注意:IIS 5 不支持 PollingDuplexNetTcp 绑定。

图 3 示例 web.config 文件

创建一个 .svc 文件以包含服务器的实现。

图 4 CalculatorService.svc

现在,WCF 服务已准备好被客户端托管和使用。

3. 在 IIS 5 上配置 WCF 应用程序

3.1 检查服务器计算机上的 IIS

要检查 IIS 的存在,请单击开始 -> 运行,然后在命令窗口中键入 inetmgr。如果 IIS 已安装,IIS 管理控制台将打开。

图 1 IIS 管理控制台

3.2. 在 IIS 5 上托管 WCF 服务

将 ASP.NET 配置更改为 WCF 服务构建所在的 .NET Framework 版本。

图 2 .NET 4.0 的 ASP.NET 配置

创建一个名为 CalculatorService 的虚拟目录。

图 3 虚拟目录 CalculatorService 的组织结构

创建一个 App_code 文件夹,并将 CalculatorService.csCalculatorService.svc.cs 放入其中。将 .NET 程序集放入 bin 文件夹。

web.configCalculatorService.svc 文件放入虚拟目录 CalculatorService 中。

3.3. 测试 WCF 服务

在虚拟目录 https://:64692/CalculatorService/CalculatorService.svc 中输入 WCF 服务的 URL 和 SVC 文件的路径,然后出现下图所示的页面:

图 4 Web 服务成功托管

4. 在 IIS 7 上配置 WCF 应用程序

4.1. 在计算机上安装 IIS 7

要安装 IIS,请单击开始 -> 运行,然后在命令窗口中键入 appwiz.cpl 并按 Enter 键。现在单击启用或关闭 Windows 功能

启用 Internet Information Services,并确保 IIS 下的所有子文件夹都已选中,然后单击“确定”。这将会在您的计算机上安装 IIS。

图 1 启用 IIS 功能

同时启用 Microsoft .NET Framework 3.5.1,并确保 WCF HTTP 激活 WCF 非 HTTP 激活已启用,然后单击“确定”。

图 2 启用 .NET Framework 3.5.1

我们需要注册 aspnet_regiis.exe 来告知 IIS WCF 扩展。在命令提示符下,转到以下路径:WINDOWS\Microsoft.NET\Framework\v4.0.30319>asp.net_regiis.exe -i –enable 并按 Enter 键。

图 3 注册 aspnet_regiis.exe

注册 WCF 扩展,在命令提示符下,转到以下路径:Windows Microsoft.NET\Framework\\V3.0\Windows Communication Foundation\ServiceModelReg.exe –i 并按 Enter 键。

图 4 注册 WCF 扩展

要检查 IIS 的存在,请单击开始 -> 运行,然后在命令窗口中键入 inetmgr 并按 Enter 键。IIS 管理窗口将打开。双击应用程序池。将 Framework 版本设置为 4.0 或 3.5,并将管道模式设置为集成经典模式,然后单击“确定”,如下图所示。

  

图 5 设置 Framework 和管道模式

在 IIS 中,浏览到 MIME 类型,并检查 .xaml.xbap.xap 等动词和扩展名,因为这些扩展名由 Silverlight 应用程序使用。

注意:从 IIS 7.0 开始,这些 MIME 类型已可用,因此我们无需添加它们,但如果我们使用的是较低版本,则需要单独添加它们。

图 6 包含 MIME 类型的 IIS 管理窗口

4.2. 在 IIS 7 上托管 WCF 服务

将 ASP.NET 配置更改为 WCF 服务构建所在的 .NET Framework 版本。

图 7 .NET 4.0 的 ASP.NET 配置

创建一个名为 CalculatorService 的虚拟目录。

图 8 虚拟目录 patient demo 的组织结构

创建一个 App_code 文件夹,并将 CalculatorService.csCalculatorService.svc.cs 放入其中。将 .NET 程序集放入 bin 文件夹。

web.configpatientService.svc 文件放入虚拟目录。

4.3. 测试 WCF 服务

在虚拟目录 https://:64692/CalculatorService.svc 中输入 WCF 服务的 URL 和 svc 文件的路径,然后出现下图所示的页面。

图 9 Web 服务成功托管

要查看 WSDL,请单击图 9 中的链接。

图 10 WCF 服务的 WSDL

5. 为 Silverlight 配置安全参数

如果您需要使用 Silverlight 客户端,则需要在虚拟目录中添加两个文件:clientaccesspolicy.xmlcrossDomain.xml。这些策略对于 IIS 5 和 IIS 7 都是相同的。

图 11 客户端访问策略

allow-from 标签中,我们可以配置 http-request-headers,例如 SOAPcontent-type 以支持 MIME。我们还可以通过将它们包含在 allow-from 标签中的 <domain uri> 标签中来限制对一组受信任站点的访问。这有助于我们克服来自伪造客户端的拒绝服务攻击。如果您只想允许从一个其他域(例如 http://mysite.com)访问,请将 clientaccesspolicy.xml 文件中 <allow-from> 元素内的 <domain uri="*"/> 行替换为 <domain uri="http://mysite.com"/> 行。如果 <domain-Uri> 标签使用 *,则允许所有站点访问该服务。如上所述,您还需要一个 ClientAccessPolicy 来访问 Silverlight 应用程序。将 ClientAccessPolicyCrossDomainPolicy 放在虚拟目录中,然后应用程序就可以使用了。

© . All rights reserved.