我有一个Web服务,需要从BizTalk业务流程中使用。 我在BizTalk使用我定义的消息架构,它们看起来像如何从BizTalk 2010中使用WCF服务
<?xml version="1.0" encoding="utf-16"?>
<xs:schema
xmlns:mstns="http://tempuri.org/XMLSchema.xsd"
xmlns="http://www.myapp.com/schemas/IntegrationApplication-instance"
xmlns:b="http://schemas.microsoft.com/BizTalk/2003"
xmlns:ns0="https://DTIB.PropertySchema"
elementFormDefault="qualified"
targetNamespace="http://www.myapp.com/schemas/IntegrationApplication-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation=".\CommonTypes.xsd" />
<xs:element name="ProviderRequest">
<xs:complexType>
<xs:sequence>
<xs:element name="Header" type="HeaderType" />
<xs:element name="Parameters" type="ParametersType" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
在WCF服务,我已方法,如
public ProviderResponse Provide(ProviderRequest providerRequest) {...}
其中ProviderRequest
就像
[DataContract(Namespace = "http://www.myapp.com/schemas/IntegrationApplication-instance")]
public class ProviderRequest
{
[DataMember]
public Header Header { get; set; }
[DataMember]
public Parameter[] Parameters { get; set; }
}
定义的定义当我创建发送端口并尝试发送ProviderRequest消息时,它会失败并显示不同的错误。
使用与BizTalk项目中定义的相同架构的WCF服务的最佳方法是什么?
我尝试过这样,它给了我一个错误“执行接收管道失败:”Microsoft.BizTalk.DefaultPipelines.XMLReceive,Microsoft.BizTalk.DefaultPipelines,版本= 3.0.1.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35“来源: “XML反汇编程序”接收端口:“WcfReceivePort_BizTalkWcfService/Provider”URI:“/BizTalkWcfService/Provider.svc”原因:由于多个模式与消息类型匹配,无法找到文档说明“。当我在XMLReceive管道属性中打开“允许无法识别的消息”选项时,它才会起作用 –
@Javos - 这是一个版本控制问题。您有两个程序集中定义了相同的消息,因此当BizTalk尝试将您的xml反序列化为消息时,它不知道要使用哪一个。这是不好的做法,可能会导致运行时失败,因此您应该从一个或另一个程序集中删除消息定义。请注意,这些程序集不一定是同一个BizTalk应用程序的一部分。 –
好的,但是如果我想在我的系统之间使用共享消息模式,那么我应该怎么做? –