2010-09-13 49 views
1

我一直在努力設置使用msmqIntegrationBinding的工作流服務。我現在的問題是,我總是得到這個序列化異常「System.ServiceModel.ProtocolException:反序列化消息時遇到錯誤,無法接收消息---> System.Runtime.Serialization.SerializationException:一個錯誤在反序列化MSMQ消息的XML正文時發生此消息無法接收確保服務協定使用適當的[ServiceKnownType]屬性進行修飾,或者在MsmqIntegrationBindingElement上設置了TargetSerializationTypes屬性。通過msmqIntegrationBinding使用工作流服務

至於我所瞭解的是,系列化助手找不到任何類型的序列化的消息,即使我現在用的是通用型MsmqMessage <MyMessageType>雙方在服務合同和工作流程。

MyMessageType是使用xsd.exe從.xsd生成的。

UPDATE:問題就迎刃而解了 我做了所有設置的合同(接口)上WCF(動作,ServiceKnownType ...),而不是在工作流程做。當我將其移至工作流程時,所有事情都開始奏效!

回答

1

作爲WCF初學者,這讓我有點難過。在通過MSDN MSMQ example時,我錯過了[ServiceKnownType]屬性。

[ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")] 
[ServiceKnownType(typeof(PurchaseOrder))] 
public interface IOrderProcessor 
{ 
    [OperationContract(IsOneWay = true, Action = "*")] 
    void SubmitPurchaseOrder(MsmqMessage<PurchaseOrder> msg); 
}