如何使用 BizTalk WCF 服务发布向导为已绑定到业务流程端口的 WCF 接收位置发布服务元数据
您可以使用 BizTalk WCF 服务发布向导创建 WCF 服务,以便为已绑定到业务流程端口的现有 WCF 接收位置发布服务元数据。
注意
在运行 BizTalk WCF 服务发布向导之前,必须生成 BizTalk 项目。 这些 BizTalk 项目必须包括至少具有一个公用类型修饰符的接收端口的业务流程。 在发布 WCF 适配器的服务元数据之前,还必须使用 BizTalk 管理控制台或BizTalk Server附带的 BTSTask 命令行工具创建 WCF 接收位置。 有关如何创建 WCF 接收位置的详细信息,请参阅 WCF 适配器中每个 WCF 适配器的相应主题。
为已绑定到业务流程端口的现有 WCF 接收位置发布服务元数据
单击“开始”,指向“所有程序”,指向“Microsoft BizTalk Server 20xx”,然后单击“BizTalk WCF 服务发布向导”。
注意
若要为 BizTalk 业务流程和架构创建并发布 WCF 服务元数据,可以使用 BizTalk WCF 服务发布向导。 若要使用 SOAP 适配器将业务流程和架构发布为 Web Services,可以使用 BizTalk Web Services 发布向导。
在 “欢迎使用 BizTalk WCF 服务发布向导” 页上,单击“ 下一步”。
在“ WCF 服务类型 ”页上,选择“ 仅限 Metdata 终结点 (MEX) ”选项,以发布 WCF 服务,以便为将在下一步中选择的 WCF 接收位置提供服务元数据。
在“ WCF 服务类型 ”页上的“ 发布接收位置的元数据 ”下拉列表中,选择要为其发布服务元数据的 WCF 接收位置,然后单击“ 下一步”。
在 “创建 WCF 服务 ”页上,选择“ 将 BizTalk 业务流程发布为 WCF 服务”,并单击“ 下一步”。
在 “BizTalk 程序集 ”页上的“ BizTalk 程序集文件 (*.dll) ”文本框中,键入 BizTalk 程序集文件的名称,或单击“ 浏览 ”以浏览到包含要为其发布服务元数据的业务流程 () 的程序集,然后单击“ 下一步”。
注意
在选择 BizTalk 程序集文件之前,请将所有依赖程序集复制到包含 BizTalk 程序集的同一文件夹中,或将依赖程序集安装到全局程序集缓存 (GAC) 。
注意
如果将 BizTalk 程序集文件安装到 GAC 中,请确保 GAC 中的程序集已使用将在 “BizTalk 程序集 ”对话框中选择的程序集进行更新。 如果 GAC 中的程序集具有相同的完全限定名称,BizTalk WCF 服务发布向导将使用 GAC 中的程序集文件,而不是所选程序集文件。
注意
路径长度超过 260 个字符时,可能会出现错误消息,指示路径太长。
在“ 业务流程和端口 ”页上,单击加号 (+) 展开每个程序集和业务流程的树节点。 选中相应树节点的复选框以选择要为其发布元数据的业务流程和端口。 如果要为所有选定的接收端口创建一个 WCF 服务 (.svc 文件) ,而不是为每个接收端口创建一个 WCF 服务,请选择“ 将所有选定的端口合并到单个 WCF 服务 ”选项,然后单击“ 下一步”。
注意
将所有选定端口合并到单个 WCF 服务后,所有选定端口都具有相同的端口类型,并且端口中的操作名称都是唯一的。
在 “WCF 服务属性” 页上的“ WCF 服务的目标名称空间 ”文本框中,键入 WCF 服务的目标命名空间,然后单击“ 下一步”。
在 “WCF 服务位置 ”页上的“ 位置 ”文本框中,键入生成 WCF 服务的 Web 目录名称。 可以接受默认位置 (
http://localhost/<BizTalk Assembly Name>
) ,在“ 位置 ”文本框中键入 WCF 服务的位置,或单击“ 浏览 ”并选择 Web 目录。 选择以下任何选项:覆盖现有项目。 仅当 Web 目录已存在时,此选项才可用。 仅当选择了此选项时,您才能够发布到同一位置。 否则,必须输入不同的项目位置。
允许匿名访问 WCF 服务。 此选项会为已创建的虚拟目录添加匿名访问权限。 默认情况下,虚拟目录继承其父虚拟目录或网站(如果该目录是顶级虚拟目录)的访问权限。
完成此页面后,单击“ 下一步”。
注意
项目位置可位于其他服务器上。 若要将 WCF 服务发布到其他服务器,请将项目名称键入为
http://<servername>/<WCF service location>
。注意
项目位置可位于非默认网站上。 发布到非默认网站时,请在该 URL 中包括网站的端口号。 例如,
http://<servername>:8080/<WCF service location>
。注意
向导在 Web 应用程序的 App_DataTemp 文件夹中创建的 BindingInfo.xml 文件使用管道的默认值。 接收管道的默认值为 Microsoft.BizTalk.DefaultPipelines.XMLReceive 管道,发送管道的默认值为 Microsoft.BizTalk.DefaultPipelines.PassThruTransmit 管道。
在 “WCF 服务摘要 ”页上,查看 WCF 服务的设置。
单击“ 创建 ”以创建 WCF 服务。
单击“ 完成 ”以完成 BizTalk WCF 服务发布向导。
为发布服务元数据配置 Web 应用程序
为 BizTalk WCF 服务发布向导创建的 Web 应用程序启用 ASP.NET。 有关详细信息,请参阅 启用 Web 服务。
注意
如果使用的是 Windows Server 2008 或 Windows Vista,则必须将应用程序池的标识帐户添加到 BizTalk Server Administrators 组。 将相应帐户添加到 BizTalk Server Administrators 组之后,需要重新启动 IIS 服务以使设置生效。
打开命令提示符,转到 %SystemDrive%\InetPub\ 中 BizTalk WCF 服务发布向导创建的 WCF 服务所在的文件夹,然后使用记事本打开 Web.config 文件。
在记事本中,在 system.web> 元素中添加<以下行:
<trust level="Full" originUrl="" />
注意
此设置是可选的,用于向已发布的 WCF 服务的宿主 ASP.NET 应用程序授予对受操作系统安全机制保护的任何资源的访问权限。 如果在已发布的 WCF 服务所在的计算机上安装并运行了 Windows SharePoint Services,则这是 WCF 所必需的信任级别。
在 Internet Explorer 的“ 地址 ”框中,使用格式 http:// host[:p ort]/apppath/wcfservicename.svc 键入 WCF 服务的 URL,以测试已发布的 WCF 服务。 下表描述了这些参数。
参数 值 host[:p ort] 在其中部署了你的 WCF 服务的计算机的名称。 此服务器名称后面可跟冒号和端口号。 apppath 虚拟目录和 Web 应用程序路径的名称。 wcfservicename.svc WCF 服务 .svc 文件的名称。 为了避免无意中泄漏可能敏感的服务元数据,我们建议执行下列任务以在生产环境中禁止此行为:
在 %SystemDrive%\InetPub\ 中找到 BizTalk WCF 服务发布向导创建的 WCF 服务所在的文件夹,然后使用记事本打开该文件夹中的 Web.config。
在记事本中,将 serviceMetadata> 元素中的<httpGetEnabled 属性设置为 false,如以下行所示:
<serviceMetadata httpGetEnabled="false" httpsGetEnabled="false" />
另请参阅
如何使用 BizTalk WCF 服务发布向导为基于内容的路由的 WCF 接收位置发布服务元数据
演练:通过 WCF-NetMsmq 适配器发布 WCF 服务