我有一個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應用程序的一部分。 –
好的,但是如果我想在我的系統之間使用共享消息模式,那麼我應該怎麼做? –