如何使用 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 服务,请使用 BizTalk Web 服务发布向导。

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

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

    WCF 服务类型页

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

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

    创建 WCF 服务页

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

    • 树的根节点(Web 服务说明)描述要发布的 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 服务说明节点时,不能使用空格。

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

  8. WCF 服务属性 页上的 WCF 服务文本框的 Targetnamespace 中,键入 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 管理员组。 将相应的帐户添加到 BizTalk Server 管理员组后,需要重启 IIS 服务才能使设置生效。

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

  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[:port] 部署 WCF 服务的计算机的名称。 冒号和端口号可以遵循此服务器名称。
    apppath 虚拟目录和 Web 应用程序路径的名称。
    wcfservicename.svc WCF 服务 .svc 文件的名称。
  5. 若要防止无意中泄露潜在的敏感服务元数据,建议通过执行以下任务在生产环境中禁用此行为:

    1. 在记事本中打开 Web.config,其位于 BizTalk WCF 服务发布向导在 %SystemDrive%\InetPub\ 中创建的 WCF 服务的文件夹中。

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

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

另请参阅

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