海蘭,所有。WCF netmsmq事務服務
我有一個有趣的案例。我試圖創建一個基於Windows服務應用程序託管的netmsmq綁定的wcf服務客戶端通信。 因此,我發現我的主機服務存在問題 - 它無法接收來自隊列的任何消息。 MSDTC顯示事務回滾。經過一些嘗試後,消息正在進入重試子隊列。 ServiceHost成爲失敗狀態,並在我再次開始後一次又一次失敗。 因此,在主機應用程序中,我除了主機故障狀態外,沒有任何例外情況。 我有兩項合同的服務(如果它很重要)。
[ServiceContract]
public interface IService
{
[OperationContract(IsOneWay = true)]
void Send1(MyDataContract data);
[OperationContract(IsOneWay = true)]
void Send2(MyDataContract data);
}
[DataContract]
public class MyDataContract
{
[DataMember]
public string From { get; set; }
[DataMember]
public string Host { get; set; }
[DataMember]
public string To { get; set; }
[DataMember]
public DateTime SendTime { get; set; }
}
一些服務實現
[OperationBehavior(TransactionScopeRequired = true,
TransactionAutoComplete = true)]
public void Send1(MyDataContract dc)
{......}
服務配置:
<端點地址= 「net.msmq://本地主機/私營/爲MyService」 綁定= 「netMsmqBinding」 合同=「IService 「bindingConfiguration =」 NetMsmqBinding_IService」/>
消息在隊列 - 客戶服務工作正常。 所以在運行時,服務主機的方法Send1永遠不會執行。但是,在將消息從重試子隊列移入傳入隊列後,我會處理HostFaulted事件。這就是我所能說的。
有幫助嗎?
這是很難從上面的描述中設想的問題。如果可能的話,請提供錯誤和代碼。 –
我剛剛添加更多信息。它有幫助嗎? – cyssima
你可以發佈NetMsmqBinding_IService的綁定配置嗎?我懷疑這不是設置爲Transactional,其中您的隊列具有事務屬性集。 – DaveRead