2012-06-07 106 views
1

的隊列時,我能得到這個工作,爲不同的項目,相信IM相同的路徑/模式下,但缺少的東西。 我不斷收到有害消息時,我發送的MSMQ已知類型的消息。帶毒郵件閱讀已知類型

我有一個叫具體類類有幾個屬性,飾有數據成員的屬性。我有一個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() { .... } 

} 

我要去的地方錯了什麼想法?

回答

0

服務已知類型應聲明在接口

+0

這是您的問題的解決方案?那麼請不要忘記將其標記爲正確的答案,即使它來自你自己。 –