1

我一直在努力设置使用 msmqIntegrationBinding 的工作流服务。我现在遇到的问题是我总是得到这个序列化异常“System.ServiceModel.ProtocolException:反序列化消息时遇到错误。无法接收消息。---> System.Runtime.Serialization.SerializationException:发生错误在反序列化 MSMQ 消息的 XML 正文时。无法接收消息。确保服务合同使用适当的 [ServiceKnownType] 属性进行修饰,或者在 MsmqIntegrationBindingElement 上设置了 TargetSerializationTypes 属性。

据我了解,即使我在服务合同和工作流程中都使用通用类型MsmqMessage<MyMessageType>,序列化帮助程序也找不到任何类型来序列化消息。

MyMessageType是从带有 xsd.exe 的 .xsd 生成的。

更新:问题已解决 我在合同(接口)上为 WCF(Action、ServiceKnownType ...)进行了所有设置,而不是在工作流程中进行。当我把它移到工作流程中时,一切都开始工作了!!

4

1 回答 1

1

作为一个 WCF 初学者,这让我有点难过。在浏览 MSDN MSMQ示例时,我错过了该[ServiceKnownType]属性。

[ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")]
[ServiceKnownType(typeof(PurchaseOrder))]
public interface IOrderProcessor
{
    [OperationContract(IsOneWay = true, Action = "*")]
    void SubmitPurchaseOrder(MsmqMessage<PurchaseOrder> msg);
}
于 2012-11-20T09:36:41.037 回答