如何使用 BizTalk WCF 服务发布向导为基于内容的路由的 WCF 接收位置发布服务元数据

你可以使用 BizTalk WCF 服务发布向导创建 WCF 服务,以便为基于内容的路由的现有 WCF 接收位置发布服务元数据。

注意

在运行 BizTalk WCF 服务发布向导之前,必须生成 BizTalk 项目。 BizTalk 项目必须包括要发布为 WCF 服务的架构。 在发布 WCF 适配器的服务元数据之前,还必须使用 BizTalk Server 管理控制台或 BizTalk Server 附带的 BTSTask 命令行工具创建 WCF 接收位置。 有关如何创建 WCF 接收位置的详细信息,请参阅 WCF 适配器中每个 WCF 适配器的相应主题。

为基于内容的路由的现有 WCF 接收位置发布服务元数据

  1. 单击“开始”,指向“所有程序”,指向“BizTalk Server”,然后单击“BizTalk WCF 服务发布向导”。

    注意

    若要创建和发布 BizTalk 业务流程和架构的 WCF 服务元数据,请使用 BizTalk WCF 服务发布向导。 若要使用 SOAP 适配器将业务流程和架构发布为 Web Services,可以使用 BizTalk Web Services 发布向导。

  2. “欢迎使用 BizTalk WCF 服务发布向导” 页上,单击“ 下一步”。

  3. 在“ WCF 服务类型 ”页上,选择“ 仅限 Metdata 终结点 (MEX) ”选项,以发布 WCF 服务,以便为将在下一步中选择的 WCF 接收位置提供服务元数据。

    WCF 服务类型页

  4. 在“ WCF 服务类型 ”页上的“ 发布接收位置的元数据 ”下拉列表中,选择要为其发布服务元数据的 WCF 接收位置,然后单击“ 下一步”。

  5. “创建 WCF 服务 ”页上,选择“ 将架构发布为 WCF 服务”,然后单击“ 下一步”。

    “创建 WCF 服务”页

  6. 在“ WCF 服务 ”页上,定义要为其发布服务元数据的 WCF 服务协定 () 。 使用 “ Web 服务说明 ” 对话框中的 树添加、删除、重命名和编辑要发布的 WCF 服务的 Web 服务说明节点。 “ 信息 ”对话框提供有关所选节点的信息,并显示当前节点或任何子节点中的任何错误:

    • 树的根节点(Web Services 说明)描述了要发布的 WCF 服务协定。 虚拟目录名称使用该根节点作为默认名称。 可以通过选择“重命名 Web 服务说明”来修改要发布的 WCF 服务的 Web 服务说明名称。

      WCF 服务页

    • 默认服务节点 Service1 的 Web 方法节点 Operation1(默认显示在“ Web 服务说明 ”对话框中)可用于请求-响应接收位置。 如果为此服务协定选择了单向 WCF 接收位置,请右键单击默认 Web 方法节点,单击“ 删除 Web 方法”,然后创建单向 Web 方法,如下所示:右键单击默认服务节点,指向 “添加 Web 方法”,然后单击“ 单向”。

    • 若要添加新的 WCF 服务,请右键单击 Web 服务说明名称,然后单击“ 添加 Web 服务”。 这会创建一个不带有任何 WCF 操作的新 WCF 服务。 若要修改 WCF 服务的名称,请右键单击 WCF 服务节点,单击“ 重命名 Web 服务”,然后按 Enter 接受新名称。

    • 若要添加新的 WCF 操作,请右键单击 WCF 服务节点,指向 “添加 Web 方法”,然后单击“ 单向 (”(针对请求 WCF 操作) )或 请求-响应 WCF 操作) 的“请求-响应 (”。

    • 若要设置请求和响应架构类型,请右键单击“ 请求 ”或“ 响应” 节点,然后单击“ 选择架构类型”。 在“ 请求消息类型 ”对话框中,在 “BizTalk 程序集文件 ”文本框中键入包含文档架构的程序集的名称,或单击“ 浏览 ”搜索程序集。 “ 可用架构类型 ”列表视图显示架构的每个根元素。 选择要作为请求或响应架构类型添加的根节点。

      注意

      如果将 BizTalk 程序集文件安装到全局程序集缓存 (GAC) ,请确保 GAC 中的程序集已使用将在“ 请求消息类型 ”对话框中选择的程序集进行更新。 如果 GAC 中的程序集具有相同的完全限定名,则 BizTalk WCF 服务发布向导将使用 GAC 中的程序集文件而不是您选择的程序集文件。

      请求消息类型页

    • 可以重命名 “请求” 和“ 响应” 节点,而不会影响生成的代码。 在定义了架构之后,可以重命名部分元素,这会修改 WCF 操作的参数名称。 通过查看要发布的 WCF 服务的服务元数据,可以看到发生的更改。

    注意

    在重命名任何 Web Services 说明节点时,不能使用空格。

  7. 单击“ 下一步 ”继续向导。

  8. “WCF 服务属性” 页上的“ WCF 服务的目标名称空间 ”文本框中,键入 WCF 服务的目标命名空间,然后单击“ 下一步”。

    WCF 服务属性页

  9. “WCF 服务位置 ”页上的“ 位置 ”文本框中,键入生成 WCF 服务的 Web 目录名称。 可以接受默认位置 (http://localhost/<Web service description name>) ,在“ 位置 ”文本框中键入 WCF 服务的位置,或单击“ 浏览 ”并选择 Web 目录。 选择以下任何选项:

    • 覆盖现有项目。 仅当 Web 目录已存在时,此选项才可用。 仅当选择了此选项时,您才能够发布到同一位置。 否则,必须输入不同的项目位置。

    • 允许匿名访问 WCF 服务。 此选项会为已创建的虚拟目录添加匿名访问权限。 默认情况下,虚拟目录继承其父虚拟目录或网站(如果该目录是顶级虚拟目录)的访问权限。

      完成此页面后,单击“ 下一步”。

      WCF 服务位置页

      注意

      项目位置可位于其他服务器上。 若要将 WCF 服务发布到其他服务器,请将项目名称键入为 http://<servername>/<WCF service location>

      注意

      项目位置可位于非默认网站上。 发布到非默认网站时,请在该 URL 中包括网站的端口号。 例如,http://<servername>:8080/<WCF service location>

      注意

      向导在 Web 应用程序的 \App_Data\Temp 文件夹中创建的 BindingInfo.xml 文件使用管道的默认值。 接收管道的默认值为 Microsoft.BizTalk.DefaultPipelines.XMLReceive 管道,发送管道的默认值为 Microsoft.BizTalk.DefaultPipelines.PassThruTransmit 管道。

  10. “WCF 服务摘要 ”页上,查看 WCF 服务的设置。

  11. 单击“ 创建 ”以创建 WCF 服务。

  12. 单击“ 完成 ”以完成 BizTalk WCF 服务发布向导。

为发布服务元数据配置 Web 应用程序

  1. 为 BizTalk WCF 服务发布向导创建的 Web 应用程序启用 ASP.NET。 有关详细信息,请参阅 启用 Web 服务

    注意

    如果您使用的是其他版本的 Windows 操作系统,则必须将应用程序池的标识帐户添加到 BizTalk Server Administrators 组。 将相应的帐户添加到“BizTalk Server管理员”组后,需要重启 IIS 服务才能使设置生效。

  2. 打开命令提示符,转到 %SystemDrive%\InetPub\ 中 BizTalk WCF 服务发布向导创建的 WCF 服务所在的文件夹,然后使用记事本打开 Web.config 文件。

  3. 在记事本中,在 system.web> 元素中添加<以下行:

    <trust level="Full" originUrl="" />  
    

    注意

    此设置是可选的,用于向已发布的 WCF 服务的宿主 ASP.NET 应用程序授予对受操作系统安全机制保护的任何资源的访问权限。 如果在已发布的 WCF 服务所在的计算机上安装并运行了 Windows SharePoint Services,则这是 WCF 所必需的信任级别。

  4. 在 Internet Explorer 的“ 地址 ”框中,使用格式 http:// host[:p ort]/apppath/wcfservicename.svc 键入 WCF 服务的 URL,以测试已发布的 WCF 服务。 下表描述了这些参数。

    参数
    host[:p ort] 在其中部署了你的 WCF 服务的计算机的名称。 此服务器名称后面可跟冒号和端口号。
    apppath 虚拟目录和 Web 应用程序路径的名称。
    wcfservicename.svc WCF 服务 .svc 文件的名称。
  5. 为了避免无意中泄漏可能敏感的服务元数据,我们建议执行下列任务以在生产环境中禁止此行为:

    1. 在 %SystemDrive%\InetPub\ 中找到 BizTalk WCF 服务发布向导创建的 WCF 服务所在的文件夹,然后使用记事本打开该文件夹中的 Web.config。

    2. 在记事本中,将 serviceMetadata> 元素中的<httpGetEnabled 属性设置为 false,如下所示:

      <serviceMetadata httpGetEnabled="false" httpsGetEnabled="false" />  
      

另请参阅

如何使用 BizTalk WCF 服务发布向导将架构发布为 WCF 服务
演练:通过 WCF-NetMsmq 适配器发布 WCF 服务