读取已知类型队列时的毒药消息

时间:2012-06-07 17:00:40

标签: wcf msmq

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

我有一个名为ConcreteClass的类,它有几个属性,用DataMember属性修饰。我有一个ConcreteClass派生自的“Base”类。 我可以将消息发送到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 .... }
}

接口:

[ServiceContract]
public interface IWCFServiceMSMQReader {
   [OperationContract(IsOneWay = true, Action = "*")]
   void ProcessIncomingMessage(MsmqMessage<BaseClass> msg);
}

BaseClass的:

[DataContract]
[KnownType(typeof(ConcreteClass))]
public class BaseClass
{
   ... some properties here...
}

具体类:

[DataContract]
public class ConcreteClass : BaseClass {

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

}

我出错的任何想法?

1 个答案:

答案 0 :(得分:0)

应在界面

中声明服务已知类型