我正在學習有關MsmqIntegrationBinding。到目前爲止,我所見過的所有樣本和指南都涵蓋了一個數據合同只有一個操作的場景。我試圖添加另一份合同,並且服務已成功啓動。但我無法弄清楚如何達到第二個操作。這種綁定有可能實現嗎?MsmqIntegrationBinding是否支持多種服務操作
[ServiceContract]
[ServiceKnownType(typeof(Data1))]
[ServiceKnownType(typeof(Data2))]
public interface ISampleService
{
[OperationContract(IsOneWay = true, Action = "*")]
void Operation1(MsmqMessage<Data1> msg);
[OperationContract(IsOneWay = true)]
void Operation2(MsmqMessage<Data2> msg);
}
public class SampleService : ISampleService
{
[OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)]
public void Operation1(MsmqMessage<Data1> msg)
{
var data = msg.Body;
}
[OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)]
public void Operation2(MsmqMessage<Data2> msg)
{
var data = msg.Body;
}
}
調用代碼
var queue = new MessageQueue(@".\private$\samplequeue");
var body = new Data1() { Data = "some data" };
var message = new Message(body);
message.Label = "some label";
queue.Send(body, MessageQueueTransactionType.Single);
這將觸發其具有操作設置爲 「*」 的Operation1。
你的調用代碼是什麼樣的? – 2013-05-12 07:08:42
我添加了調用代碼。這很簡單。只是普通的MSMQ消息。 – StanislawSwierc 2013-05-13 09:28:43
如果您刪除了Action = *會發生什麼? – 2013-05-14 10:10:56