Wcf 读取已知类型的队列时发出有毒消息

Wcf 读取已知类型的队列时发出有毒消息,wcf,msmq,Wcf,Msmq,我能够在不同的项目中工作,并且相信我遵循相同的路径/模式,但是缺少了一些东西。 当我在MSMQ上发送一条已知类型的消息时,我不断收到一条有毒消息 我有一个名为ConcreteClass的类,它有几个属性,用DataMember属性修饰。我有一个“基本”类,具体类就是从这个类派生出来的。 我可以将消息发送到MSMQ,但当使用WCF从MSMQ读取时,服务总是出现故障,并且查看日志,这是一条有毒消息 WCF服务使用基类作为签名(在不同的项目中工作得很好),并为服务应该期望的具体类修饰servicekn

我能够在不同的项目中工作,并且相信我遵循相同的路径/模式,但是缺少了一些东西。 当我在MSMQ上发送一条已知类型的消息时,我不断收到一条有毒消息

我有一个名为ConcreteClass的类,它有几个属性,用DataMember属性修饰。我有一个“基本”类,具体类就是从这个类派生出来的。 我可以将消息发送到MSMQ,但当使用WCF从MSMQ读取时,服务总是出现故障,并且查看日志,这是一条有毒消息

WCF服务使用基类作为签名(在不同的项目中工作得很好),并为服务应该期望的具体类修饰serviceknowntype属性

[ServiceKnownType(typeof(ConcreteClass))]
public sealed class WCFServiceMSMQReader : IWCFServiceMSMQReader { 
   [OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)]
   public void ProcessIncomingMessage(MsmqMessage<BaseClass> msg) { .... do stuff .... }
}
混凝土等级:

[DataContract]
public class ConcreteClass : BaseClass {

public ConcreteClass() : base() { ... stuff ... }
public ConcreteClass(params here) : base() { .... }

}

你知道我哪里出错了吗

应该在接口中声明已知的服务类型

这是问题的解决方案吗?那么请不要忘记把它标记为正确答案,即使它来自你自己。
[DataContract]
[KnownType(typeof(ConcreteClass))]
public class BaseClass
{
   ... some properties here...
}
[DataContract]
public class ConcreteClass : BaseClass {

public ConcreteClass() : base() { ... stuff ... }
public ConcreteClass(params here) : base() { .... }

}