BizTalk 오케스트레이션에서 소비해야하는 웹 서비스가 있습니다. 내가 BizTalk에서 사용 내가 정의한 메시지 스키마, 그들은 내가 방법 ProviderRequest
이BizTalk 2010에서 WCF 서비스를 사용하는 방법
[DataContract(Namespace = "http://www.myapp.com/schemas/IntegrationApplication-instance")]
public class ProviderRequest
{
[DataMember]
public Header Header { get; set; }
[DataMember]
public Parameter[] Parameters { get; set; }
}
과 같이 정의된다
public ProviderResponse Provide(ProviderRequest providerRequest) {...}
같이 정의 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>
처럼 송신 포트를 작성하고 ProviderRequest 메시지를 보내려고하면 다른 오류로 실패합니다.
BizTalk 프로젝트에서 정의한 것과 동일한 스키마를 사용하는 WCF 서비스를 사용하는 가장 좋은 방법은 무엇입니까?
시도했습니다. 이 방법을 사용하면 "수신 파이프 라인을 실행하는 동안 오류가 발생했습니다."Microsoft.BizTalk.DefaultPipelines.XMLReceive, Microsoft.BizTalk.DefaultPipelines, Version = 3.0.1.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 "원본 : "XML disassembler"수신 포트 : "WcfReceivePort_BizTalkWcfService/Provider"URI : "/BizTalkWcfService/Provider.svc"이유 : 여러 스키마가 메시지 유형과 일치하므로 문서 사양을 찾을 수 없습니다. " XMLReceive 파이프 라인 속성에서 알 수없는 메시지 허용 옵션을 켜면 작동합니다. –
@Javos - 이것은 버전 문제입니다. 동일한 메시지가 정의 된 두 개의 어셈블리가 있으므로 BizTalk가 xml을 메시지로 deserialize하려고 시도 할 때 사용할 메시지를 모릅니다. 이것은 나쁜 관행이며 하나 또는 다른 어셈블리에서 메시지 정의를 제거해야하므로 런타임 오류를 유발할 수 있습니다. 이러한 어셈블리는 반드시 동일한 BizTalk 응용 프로그램의 일부는 아닙니다. –
그래도 내 시스템간에 공유 메시지 스키마를 사용하려면 어떻게해야합니까? –