我一直在努力设置使用msmqIntegrationBinding的工作流服务。我现在遇到的问题是我总是得到这个序列化异常“System.ServiceModel.ProtocolException:反序列化消息时遇到错误。无法接收消息.--> System.Runtime.Serialization.SerializationException :反序列化MSMQ消息的XML主体时发生错误。无法接收消息。确保使用适当的[ServiceKnownType]属性修饰服务合同,或者在MsmqIntegrationBindingElement上设置TargetSerializationTypes属性。“
据我所知,即使我在服务合同和服务合同中使用泛型类型 MsmqMessage< MyMessageType> ,序列化帮助程序也找不到任何类型来序列化消息。工作流程。
MyMessageType 是使用xsd.exe从.xsd生成的。
更新:问题已解决 我在合同(接口)上完成了WCF(Action,ServiceKnownType ...)的所有设置,而不是在工作流中完成。当我把它移到工作流程时,一切都开始工作了!!
答案 0 :(得分: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);
}