使用多个模式文件和<includes> </includes>发布Biztalk WCF服务

时间:2012-08-20 21:54:28

标签: wcf biztalk publishing hl7

我在这里有这个:

Visual Studio 2010中的Biztalk项目,是Biztalk 2010服务器上运行的相应Biztalk应用程序。接收端口接受HL7-V3架构,将其转换为发送到SQL Server 2008实例并通过存储过程插入表中的架构。当接收端口使用FILE适配器时,所有工作都按预期工作(HL7文件中的数据插入到表中)。

因此,我们达到了需要Web服务才能通过Web公开接收端口的程度......很棒,我们在VS2010中内置了“Biztalk WCF服务发布向导”。这就是我在我的轨道上停下来的地方。

我可以按照向导一直到“创建”步骤,它使它大约从从Biztalk程序集提取模式的一半然后它barfs并抛出一般错误:

“字典中没有给定的密钥”

经过多次搜索和抓挠后,我终于得知导向器使用Xsd.exe(对我来说是新的)来从模式生成代码。这使我进入了MSDN库文章Here,该文章指出Xsd.exe会忽略包含的模式。好吧,我们使用的消息的HL7V3模式集共有大约30个文件 - 所有这些都是相互引用的,如下所示:

<xs:include schemaLocation="../coreschemas/infrastructureRoot.xsd"/>
<xs:include schemaLocation="COCT_MT050002UV07.xsd"/>
<xs:include schemaLocation="COCT_MT090100UV01.xsd"/>
<xs:include schemaLocation="COCT_MT240000UV01.xsd"/>
<xs:include schemaLocation="COCT_MT150000UV02.xsd"/>

所以这是我的问题。

所以现在我的问题是:有没有办法从Biztalk项目手动创建WCF服务,或者更好的是,只需让向导为这种情况工作?或者,关于在哪里寻找的任何建议,因为这是我的第一个Biztalk项目。

我的谷歌搜索只为向导提供了大量的操作方法。

1 个答案:

答案 0 :(得分:3)

好吧,这个问题已经解决了,尽管有太多的兔子漏洞,我偶然发现了一篇名为Getting Started with HL7 v3 and Biztalk Server 2006的MSDN文章,其中有一小部分名为架构修改。其中一个修改是将目标命名空间添加到HL7 v3中的某些coreschema文件中。

我以前见过这个文档,它提到这解决了在BizTalk Server 中编译模式时不支持的问题。我有点忽略它,因为我没有错误,而且,我使用的是2010年,而不是2006年所以我天真地想“现在必须修复......没有错误”

不是这样,我完全按照文档的建议完成并立即部署并运行了Biztalk WCF服务发布向导,它完成了所有工作,我能够查看生成的帮助和.wsdl页面。

我希望这有助于将来的某些人。对我来说非常反高潮。