2012-02-29 58 views
1

我試圖設置我的Biztalk業務流發送到WCF的消息的MessageHeader。 Message Contract在WCF項目中看起來如下所示。Biztalk在Biztalk消息分配中設置WCF MessageHeaders

[MessageContract(IsWrapped = true, WrapperName = "PerformTransformationRequestWrapper", WrapperNamespace="http://www.iasreo.com/integration/servicetypes")] 
public class PerformTransformationRequest 
{ 
    [MessageHeader(Namespace = "http://www.iasreo.com/integration/servicetypes")] 
    public string Version { get; set; } 
    /// <summary> 
    /// 
    /// </summary> 
    [MessageHeader(Namespace = "http://www.iasreo.com/integration/servicetypes", MustUnderstand = true)] 
    public TransformType TransformType { get; set; } 

    /// <summary> 
    /// 
    /// </summary> 
    [MessageBodyMember(Namespace = "http://www.iasreo.com/integration/servicetypes")] 
    public System.IO.Stream Payload { get; set; } 
} 

TransformType.cs

[DataContract(Namespace = "http://www.iasreo.com/integration/servicetypes")] 
public enum TransformType 
{ 
    /// <summary> 
    /// Transform to Excel 
    /// </summary> 
    [EnumMember] 
    ExcelTransform = 1, 

    /// <summary> 
    /// Transform to PDF 
    /// </summary> 
    [EnumMember] 
    PDFTransform = 2 
} 

我創建的消息發送的消息賦值形狀到BizTalk和代碼如下:

xmlDoc = new System.Xml.XmlDocument(); 
xmlDoc.LoadXml(@"<ns0:PerformTransformationRequestWrapper xmlns:ns0=""http://www.iasreo.com/integration/servicetypes""><ns0:Payload>GpM7</ns0:Payload></ns0:PerformTransformationRequestWrapper>"); 

PerformTransformationRequest = xmlDoc; 

xpath(PerformTransformationRequest, "/*[local-name()='PerformTransformationRequestWrapper' and namespace-uri()='http://www.iasreo.com/integration/servicetypes']/*[local-name()='Payload']") = System.Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(Input.OuterXml)); 

如何設置WCF MessageContract中MessageHeaders的Version和TransformType?

回答

1

您可以設置傳出消息

OutboundMessage(WCF.OuboundCustomHeaders) = "..."; 

您需要提供完整的WCF頭字符串作爲參數的提升WCF.OutboundCustomHeaders財產。

這個http://bencode.net/biztalk-custom-wcf-behaviour可能對您有用。

+0

我錯過了使用WCF.OutboundCustomHeaders的一件事是爲我的自定義類型添加命名空間。 – Hopdizzle 2012-03-06 17:50:40